Báo lỗi Dim rsData As ADODB.Recordset!

Liên hệ QC

ThuNghi

Hãy cho rồi sẽ nhận!
Thành viên đã mất
Tham gia
16/8/06
Bài viết
3,808
Được thích
4,449
Tôi đang thực hành ADO, copy file ADO Test thành ADOTest01 thì chạy không sao. Nhưng khi tạo 1 file mới tên ADOTest02, copy những code và UDF vào, khi chạy thì báo lỗi.
Dòng Public màu vàng và báo lỗi dòng
Dim rsData As ADODB.Recordset
PHP:
Public Sub GetData(SourceFile As Variant, SourceSheet As String, _
          sourceRange As String, TargetRange As Range, Header As Boolean, _
          UseHeaderRow As Boolean)
    Dim rsData As ADODB.Recordset
Nhờ các bạn HD tìm chỗ sai.
Xem file kèm. Cám ơn!
Và xin hỏi thêm, đây là cách lấy dl từ file đang đóng, nếu lỡ nó đang mở thì co cần phải đóng nó lại.
 

File đính kèm

Cho tôi xin giải thích thêm về câu lệnh
Mã:
[COLOR=#000000][COLOR=#0000bb]Set rsData [/COLOR][COLOR=#007700]= New [/COLOR][COLOR=#0000bb]ADODB[/COLOR][COLOR=#007700].[/COLOR][COLOR=#0000bb]Recordset[/COLOR][/COLOR]
Câu lệnh trên có nghĩa là tạo một vùng nhớ cho biến rsData.
Có thể tham khảo thêm thủ tục RecordsetToRange tại đây: http://www.giaiphapexcel.com/forum/showthread.php?p=56502

Tại sao lại là rsData , như đã có lần chúng ta nói về việc khai báo biến, rs ký tự đại diện cho biến kiểu Recordset. Tương tự như khi ta khai báo lRow, đây là biến kiểu Long.

Vbavn
 
Upvote 0
Mấy hôm nay nghiên cứu ADO của Bác SeaLand và Bác Duyệt muốn ốm mà chưa tìm cách nào để tìm ra dòng cuối của file đóng tựa như end(xlUp).
2 Bác hỗ trợ hộ 1 sub hay function.
Cám ơn nhiều.
 
Upvote 0
Trong tập hợp recordset để xác định vị trí đầu tiên hay cuối cùng dùng hàm BOF() và EOF()
Ví dụ : if Rec.Bof()=True hay Rec.Eof()=true Then....làm gì đó..
Còn dịch chuyển: về đầu Rec.MoveFirst, về cuối Rec.MoveLast.

Mình chưa biết bạn tìm dòng cuối cùng làm gì nên cũng chưa có phương án sử lý để bạn tham khảo.
 
Lần chỉnh sửa cuối:
Upvote 0
Trong tập hợp recordset để xác định vị trí đầu tiên hay cuối cùng dùng hàm BOF() và EOF()
Ví dụ : if Rec.Bof()=True hay Rec.Eof()=true Then....làm gì đó..
Còn dịch chuyển: về đầu Rec.MoveFirst, về cuối Rec.MoveLast.

Mình chưa biết bạn tìm dòng cuối cùng làm gì nên cũng chưa có phương án sử lý để bạn tham khảo.
Thú thật là em cũng chưa biết cụ thể cho cái gì. Cơ bản là muốn tìm thuật giải cụ thể theo ADO thôi.
 
Upvote 0
PHP:
.InitialFileName = MyPath (Có vấn đề vì Dialog không mở ra thư mục chứa File TONGHOP)
Cái này copy mà chưa đến nới, đến chốn. Để em test lại
Anh kiểm tra hộ code sau có đúng không, do không thoát Excel nên Excel cứ mặc định folder. Xử lý for i thấy hơi vụng.
PHP:
Sub LayDuLieuADO()
Dim SaveDriveDir As String, MyPath As String, i As Long, N As Long
Dim FName '(1 To 100) ' As Variant
Dim DestRange As Range
Dim sh As Worksheet
shName = "NKC"
MyPath = ThisWorkbook.Path
With Application.FileDialog(msoFileDialogOpen)
.InitialFileName = MyPath
.Filters.Clear
.AllowMultiSelect = True
.Filters.Add "Excel files", "*.xls"
.Show
If .SelectedItems.Count = 0 Then
MsgBox "Ban chua chon file"
Exit Sub
End If
Sheets("NKC").Range("A9:N1000").ClearContents
ReDim FName(1 To .SelectedItems.Count)
For i = 1 To .SelectedItems.Count
FName(i) = .SelectedItems(i)
Next
If IsArray(FName) Then
' Sort the Array
FName = Array_Sort(FName)
Application.ScreenUpdating = False
'Loop through all files you select in the GetOpenFilename dialog
For N = LBound(FName) To UBound(FName)
'Find the last row with data
endR = Sheets("NKC").[a65000].End(xlUp).Row
'create the destination cell address
Set DestRange = Sheets("NKC").Cells(endR + 1, "A")
'Get the cell values and copy it in the destrange
'Change the Sheet name and range as you like
GetData FName(N), shName, "A10:M1000", DestRange, False, False
' For testing Copy the workbook name in Column N
eRow = Sheets("NKC").[a65000].End(xlUp).Row
Sheets("NKC").Range("N" & endR + 1 & ":N" & eRow).Value = Right(FName(N), 8)
Next
End If
ChDrive SaveDriveDir
'ChDir SaveDriveDir
Application.ScreenUpdating = True
End With
End Sub

Chà cái này đúng cái mình đang cần, nhưng bạn có thể giúp thêm giùm mình 1 tý: Tên sheet trong các file của mình đều khác nhau chứ không phải là 1 chữ "NKC" như file của bạn, Vậy bạn có thể giúp mình thay đoạn code nào cho nó chạy trên các sheet có tên khác giùm nhé.
 
Upvote 0
Chà cái này đúng cái mình đang cần, nhưng bạn có thể giúp thêm giùm mình 1 tý: Tên sheet trong các file của mình đều khác nhau chứ không phải là 1 chữ "NKC" như file của bạn, Vậy bạn có thể giúp mình thay đoạn code nào cho nó chạy trên các sheet có tên khác giùm nhé.
Bạn làm thêm 1 danh sách tên sheet và duyệt qua các cell đó là OK thôi.
Cụ thể
A1: NKC
A2: abc
A3: xyz
Thêm 1 vòng lặp
PHP:
For i= 1 to 3
shName=cells(i,1)
'...
next i
 
Upvote 0
Bạn làm thêm 1 danh sách tên sheet và duyệt qua các cell đó là OK thôi.
Cụ thể
A1: NKC
A2: abc
A3: xyz
Thêm 1 vòng lặp
PHP:
For i= 1 to 3
shName=cells(i,1)
'...
next i

Danh sách tên sheet thì nhiều lắm, nếu không làm tự động thì tốn thời gian lắm. Bạn có cách nào làm tự động không?
Và bạn chèn vào VBA giùm, vì mình không rành lắm

Cám ơn.
 
Upvote 0
Danh sách tên sheet thì nhiều lắm, nếu không làm tự động thì tốn thời gian lắm. Bạn có cách nào làm tự động không?
Và bạn chèn vào VBA giùm, vì mình không rành lắm

Cám ơn.
Bạn làm file thô gởi tên gồm file nguồn và file đích, tên sh thế nào gởi lên. Sẽ viết code cụ thể mới được.
 
Upvote 0
Bạn làm file thô gởi tên gồm file nguồn và file đích, tên sh thế nào gởi lên. Sẽ viết code cụ thể mới được.


Mình có nhiều file giống như file 1.xls, 2.xls...., trong mỗi file chỉ có 1 sheet và có thông tin như đính kèm (tên sheet luôn luôn thay đổi theo tên file), chỉ khác nhau là số lượng hạng mục trong từng báo giá khác nhau (có thể là 1 hoặc 100), nhưng dòng cuối cùng vẫn là tổng cộng (như cột B).

Bây giờ cuối tháng mình muốn tổng hợp lại cái thông tin khách hàng vào file Tong hop ở sheet1, và danh sách sản phẩm đã chào vào sheet 2.

Nhờ các bạn giúp giùm nhé.
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Mình có nhiều file giống như file 1.xls, 2.xls...., trong mỗi file chỉ có 1 sheet và có thông tin như đính kèm (tên sheet luôn luôn thay đổi theo tên file), chỉ khác nhau là số lượng hạng mục trong từng báo giá khác nhau (có thể là 1 hoặc 100), nhưng dòng cuối cùng vẫn là tổng cộng (như cột B).

Bây giờ cuối tháng mình muốn tổng hợp lại cái thông tin khách hàng vào file Tong hop ở sheet1, và danh sách sản phẩm đã chào vào sheet 2.

Nhờ các bạn giúp giùm nhé.
Dùng tạm phần 1, copy vào sh sub (chi tiết). Mai làm tiếp, cái vụ lấy file này là copy của NDU đó.
Nhớ copy các file con vào folder Data cùng folder file tonghop.
 

File đính kèm

Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom