Bài tập về ADO căn bản.

Liên hệ QC
Em cũng hay xem Topic này, nhưng chỉ xem để dùng thôi, chưa học được gì cả, topic cực kỳ bổ ích, có lần hứa với anh HL là sẽ học nhưng em bận quá nên chưa học được. Thật sự xin lỗi anh!
Cảm ơn anh đã mở Topic này!
 
Nên nhìn đại cục hơn

[TIP]Bạn hãy liệt kê (Ms, Ten, Mau) ở sheet Data2 mà không xuất hiện ở sheet Data1[/TIP]

Chết rồi , em có vẻ nghiền ADO rồi ( càng vọc càng thấy hay), kiểu này lại thích ADO hơn Advanced Filter mất,^^


so sánh thế khập khiễng
Advanced Filter chỉ là 1 chức năng nhỏ của excel thôi
trong khi đó SQL là hẳn 1 ngôn ngữ xử lý dữ liệu

Thực ra áp dụng ADO vào cho excel kiểu như trong bóng đá dùng tiền vệ cánh phải mà thuận chân trái (giỏi) để đi vào và ghi bàn đó (như kiểu Robben - Bayer).

Ví von chút cho vui, nhưng qua đó thấy khai thác ADO cho excel thì cũng chỉ là 1 góc mạnh trong nhiều giải pháp khác nữa

Tuy thế, các bài tập ở đây đã có ích nào đó cho người đã biết sơ sơ về áp dụng SQL cho excel - nó sẽ có ích hơn nhiều nếu chủ topic trình bày bài bản theo góc độ hướng cho người mới học.
 
so sánh thế khập khiễng
Advanced Filter chỉ là 1 chức năng nhỏ của excel thôi
trong khi đó SQL là hẳn 1 ngôn ngữ xử lý dữ liệu

Thực ra áp dụng ADO vào cho excel kiểu như trong bóng đá dùng tiền vệ cánh phải mà thuận chân trái (giỏi) để đi vào và ghi bàn đó (như kiểu Robben - Bayer).

Ví von chút cho vui, nhưng qua đó thấy khai thác ADO cho excel thì cũng chỉ là 1 góc mạnh trong nhiều giải pháp khác nữa

Tuy thế, các bài tập ở đây đã có ích nào đó cho người đã biết sơ sơ về áp dụng SQL cho excel - nó sẽ có ích hơn nhiều nếu chủ topic trình bày bài bản theo góc độ hướng cho người mới học.

Ặc ,em nói như vầy là dựa trên quan điểm chủ quan của em thôi ^^, là em đang so sánh về cách dùng ADO và Advanced Filter trong việc trích lọc dữ liệu : việc dùng công cụ hay phương pháp nào là tùy quan điểm của mỗi cá nhân thôi mà !
cụ thể :
ADO: code dài nhưng dùng tiện hơn với File đóng
Advanced : thì code ngắn hơn, nhưng chỉ làm việc được trên worksheet
Tốc đô: thì 2 cách em thấy đều có tốc độ rất ổn < = giá trị thỏa mãn
 
so sánh thế khập khiễng
Advanced Filter chỉ là 1 chức năng nhỏ của excel thôi
trong khi đó SQL là hẳn 1 ngôn ngữ xử lý dữ liệu

Thực ra áp dụng ADO vào cho excel kiểu như trong bóng đá dùng tiền vệ cánh phải mà thuận chân trái (giỏi) để đi vào và ghi bàn đó (như kiểu Robben - Bayer).

Ví von chút cho vui, nhưng qua đó thấy khai thác ADO cho excel thì cũng chỉ là 1 góc mạnh trong nhiều giải pháp khác nữa

Tuy thế, các bài tập ở đây đã có ích nào đó cho người đã biết sơ sơ về áp dụng SQL cho excel - nó sẽ có ích hơn nhiều nếu chủ topic trình bày bài bản theo góc độ hướng cho người mới học.

Rất ghi nhận lời góp ý từ bạn, vì mình cũng mới bắt đầu học, kiến thức còn chấp vá, biết được cái nào mình chia sẻ cái đó nên chưa thể hệ thống lại được. Mong bạn giúp 1 tay nhé.
 
so sánh thế khập khiễng
Advanced Filter chỉ là 1 chức năng nhỏ của excel thôi
trong khi đó SQL là hẳn 1 ngôn ngữ xử lý dữ liệu

Thực ra áp dụng ADO vào cho excel kiểu như trong bóng đá dùng tiền vệ cánh phải mà thuận chân trái (giỏi) để đi vào và ghi bàn đó (như kiểu Robben - Bayer).

Ví von chút cho vui, nhưng qua đó thấy khai thác ADO cho excel thì cũng chỉ là 1 góc mạnh trong nhiều giải pháp khác nữa

Tuy thế, các bài tập ở đây đã có ích nào đó cho người đã biết sơ sơ về áp dụng SQL cho excel - nó sẽ có ích hơn nhiều nếu chủ topic trình bày bài bản theo góc độ hướng cho người mới học.

trong khi đó SQL là hẳn 1 ngôn ngữ xử lý dữ liệu...
Không hẳn đúng.
SQL chỉ được đặt ra để sử lý dữ liệu theo đường lối CSDL Liên Hệ mà thôi.
Để SQL hoạt động hữu hiệu CSDL Liên Hệ phải được đưa về dạng chuẩn. Tối thiểu là bậc 2, tuy lý tưởng hơn thì nên là bậc 3 (xin xem lý thuyết CSDL Liên Hệ)
Vì các bảng tính của Excel thường được trình bày theo dạng dòng và cột cho nên nếu đã thiết kế đúng đắn thì những bảng tính này có thể tạm coi như CSDL đã đạt chuẩn bậc 2 hay 3. Và người ta có thể lợi dụng ADO để gọi cổ máy SQL của Access ra để làm việc.
Những cơ cấu về join trong tiêu đề này là căn bản của SQL qua áp dụng toán đại số tổ hợp. Qua đó ta thấy rằng sử dụng chúng chỉ là một hình thức lợi dụng chức năng liên hệ dữ liệu và các con toán thống kê của ngôn ngữ SQL.

Nếu gặp loại dữ liệu sắp xếp theo chiều hướng khác thì đem SQL ra cũng như bắt chó kéo cày. (xin xem lý thuyết các loại CSDL khác, điển hình là No SQL, Big Data)

Thực ra áp dụng ADO vào...
Tôi hoàn toàn không thấy vậy. Chẳng có tiền đạo hậu vệ gì cả. Thực tế rất giản dị: nếu bảng tính không được sắp xếp thành bảng một cách hợp lý thì SQL gần như vô hiệu.
 
...
cụ thể :
ADO: code dài nhưng dùng tiện hơn với File đóng
...

Code dài hay ngắn tuỳ thuộc vào cách viết và tuỳ thuộc vào yêu cầu. Với những con toán phù hợp với CSDL Liên Hệ thì thực ra code một đoạn SQL động có thể ngắn hơn.

Vì ngôn ngữ VBA theo nguyên tắc xuống hàng là qua một lệnh mới cho nên viết một câu SQL phải nối tới nối lui cực khổ và trông xấu ỉn. Gặp những ngôn ngữ không coi xuống hàng là dứt lệnh (chính SQL không xem xuống hàng là dứt lệnh) thì câu SQL có thể được viết rất đẹp dạng.
 
Các anh chị cho DHN46 hỏi: làm cách nào để đếm số lượng các mã số của 4 Sheet rồi hiển thị kết quả tại Sheet1, không đảo thứ tự sắp xếp các mã trên sheet1.
Xin cảm ơn GPE!
 

File đính kèm

  • ADO.rar
    16.1 KB · Đọc: 20
Thì tôi đã nói rồi mà: Khi dùng thật sự tôi đâu có dùng TRANSPOSE...
Đồng thời cũng đã nói ở trên: tôi không khoái CopyFromRecordset vì nó chỉ hoạt động trên Range ---> Tôi dùng code để Add Item vào ComboBox cơ mà
---------------------
Sẳn đây cho mình hỏi mình muốn lấy kết quả của ADO gán vào Cobobox luôn thì viết code như thế nào? Hiện tại thì mình dùng cách gán xuống Sheet đặt Name rồi mới đưa vào Combobox.
Xin cám ơn!
 
Thì tôi đã nói rồi mà: Khi dùng thật sự tôi đâu có dùng TRANSPOSE...
Đồng thời cũng đã nói ở trên: tôi không khoái CopyFromRecordset vì nó chỉ hoạt động trên Range ---> Tôi dùng code để Add Item vào ComboBox cơ mà
---------------------
Sẳn đây cho mình hỏi mình muốn lấy kết quả của ADO gán vào Cobobox luôn thì viết code như thế nào? Hiện tại thì mình dùng cách gán xuống Sheet đặt Name rồi mới đưa vào Combobox.
Xin cám ơn!

Bạn dùng code sau nhé:

[GPECODE=sql]Private Sub UserForm_Initialize()
Dim cnn As New ADODB.Connection, lrs As New ADODB.Recordset, i As Integer
cnn.Open "Provider= Microsoft.Jet.OLEDB.4.0; data source=" & _
ThisWorkbook.FullName & ";Extended Properties=Excel 8.0;"
lrs.Open "select * From [Temp$] ", cnn
With Me.ComboBox1
.Clear
Do
.AddItem lrs![LastName]
lrs.MoveNext
Loop Until lrs.EOF
End With
lrs.Close: Set lrs = Nothing
cnn.Close: Set cnn = Nothing

End Sub[/GPECODE]
 

File đính kèm

  • combobox.xls
    44 KB · Đọc: 39
Bạn dùng code sau nhé:

[GPECODE=sql]Private Sub UserForm_Initialize()
Dim cnn As New ADODB.Connection, lrs As New ADODB.Recordset, i As Integer
cnn.Open "Provider= Microsoft.Jet.OLEDB.4.0; data source=" & _
ThisWorkbook.FullName & ";Extended Properties=Excel 8.0;"
lrs.Open "select * From [Temp$] ", cnn
With Me.ComboBox1
.Clear
Do
.AddItem lrs![LastName]
lrs.MoveNext
Loop Until lrs.EOF
End With
lrs.Close: Set lrs = Nothing
cnn.Close: Set cnn = Nothing

End Sub[/GPECODE]
Anh cho em hỏi tại sao em dùng
PHP:
rstArr = lrs.GetRows
GetData = TransArr(rstArr)
Me.ComboBox1.List() = GetData
(TransArr là hàm chuyển cột <->hàng)
Nhưng không được nhỉ
A.. Em test được rồi.
[GPECODE=vb]Private Sub UserForm_Initialize()
Dim cnn As New ADODB.Connection, lrs As New ADODB.Recordset, i As Integer
Dim rstArr(), GetData()
cnn.Open "Provider= Microsoft.Jet.OLEDB.4.0; data source=" & _
ThisWorkbook.FullName & ";Extended Properties=Excel 8.0;"
lrs.Open "select [LastName] From [Temp$] ", cnn
rstArr = lrs.GetRows
GetData = TransArr(rstArr)
Me.ComboBox1.List() = GetData
lrs.Close: Set lrs = Nothing
cnn.Close: Set cnn = Nothing
End Sub
[/GPECODE]
 
Lần chỉnh sửa cuối:
Anh cho em hỏi tại sao em dùng
PHP:
rstArr = lrs.GetRows
GetData = TransArr(rstArr)
Me.ComboBox1.List() = GetData
(TransArr là hàm chuyển cột <->hàng)
Nhưng không được nhỉ
A.. Em test được rồi.
[GPECODE=vb]Private Sub UserForm_Initialize()
Dim cnn As New ADODB.Connection, lrs As New ADODB.Recordset, i As Integer
Dim rstArr(), GetData()
cnn.Open "Provider= Microsoft.Jet.OLEDB.4.0; data source=" & _
ThisWorkbook.FullName & ";Extended Properties=Excel 8.0;"
lrs.Open "select [LastName] From [Temp$] ", cnn
rstArr = lrs.GetRows
GetData = TransArr(rstArr)
Me.ComboBox1.List() = GetData
lrs.Close: Set lrs = Nothing
cnn.Close: Set cnn = Nothing
End Sub
[/GPECODE]

Em nghĩ anh nên bổ sung HDR = yes , IMEX = 1 thì hoàn chỉnh hơn anh ah !
 
Các anh chị cho DHN46 hỏi: làm cách nào để đếm số lượng các mã số của 4 Sheet rồi hiển thị kết quả tại Sheet1, không đảo thứ tự sắp xếp các mã trên sheet1.
Xin cảm ơn GPE!
Gộp, đếm các mã đó đưa vào vùng tạm, dùng vùng tạm này cập nhật dữ liệu theo yêu cầu, cuối cùng xóa vùng tạm đi.

[GPECODE=sql]Sub GopSheet_HLMT()
Dim cn As Object, rst As Object, cat As Object, tbl As Object, str$, str1 As String, i As Integer
Set cn = CreateObject("ADODB.Connection")
Set cat = CreateObject("ADOX.Catalog")
Set tbl = CreateObject("ADOX.Table")
Set rst = CreateObject("ADODB.Recordset")
With cn
.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & ThisWorkbook.FullName & _
";Extended Properties=""Excel 8.0;HDR=Yes;"";"
.Open
End With
cat.ActiveConnection = cn
For Each tbl In cat.Tables
If Right(Replace(tbl.Name, "'", ""), 1) = "$" Then
str = str & " union all SELECT * from [" & _
Replace(Replace(tbl.Name, "$", ""), "'", "") & "$A1:A1000] where ma is not null"
str1 = Right(str, Len(str) - 10)
End If
Next
str1 = "select ma as Ma1, count(ma) as Dem from (" & str1 & ") group by ma"
With rst
.ActiveConnection = cn
.Open str1
End With
For Each fld In rst.Fields
i = i + 1
Cells(1, 254 + i) = fld.Name
Next
With Sheets("Sheet1")
.[IU2:IV5000].ClearContents
.[IU2].CopyFromRecordset rst
cn.Execute "UPDATE [Sheet1$A1:B6000] a " _
& "INNER JOIN " _
& "[Excel 8.0;HDR=Yes;IMEX=2;DATABASE=" & ThisWorkbook.FullName & "].[Sheet1$IU1:IV6000] b " _
& "ON a.ma=b.Ma1 " _
& "SET a.Dem=b.Dem"
.[IU1:IV5000].ClearContents
End With
rst.Close: Set rst = Nothing
cn.Close: Set cn = Nothing
Set cat = Nothing: Set tbl = Nothing

End Sub

[/GPECODE]
 

File đính kèm

  • Gop.xls
    56 KB · Đọc: 70
Gộp, đếm các mã đó đưa vào vùng tạm, dùng vùng tạm này cập nhật dữ liệu theo yêu cầu, cuối cùng xóa vùng tạm đi.
........................
Cảm ơn anh HLMT. Em cũng đã thực hiện được việc tổng hợp các Sheet với việc sử dụng Union All, nhưng nếu không sử dụng vùng tạm, chỉ sử dụng 1 câu truy vấn duy nhất để giải quyết vấn đề này thì như thế nào? Em chưa tìm ra phương pháp để giải quyết vấn đề này. Cảm ơn anh!
 
Theo lô gic, bạn có thể dùng 1 trong những cách sau:

1. Dùng lệnh UPDATE Sheet 1, LEFF JOIN với Sheet 2, LEFF JOIN với Sheet 3, LEFF JOIN với Sheet 4,...

2. Gói câu lệnh UNION các Sheet 2, 3, 4,... vào một subquery và chèn vào lênh UPDATE ... INNER JOIN trên

3. UPDATE Sheet 1, set cái field cần tổng thành 0. Sau đó dùng vòng lặp UPDATE Sheet 1 bằng cách tuần tự cộng thêm trị từ các Sheets 2, 3, 4...

Lô gic thì như vậy, nhưng khi tôi thử thì mới cách 1 đã bị sai tá hoả, tôi không có thì giờ thử tiếp.
 
Dhn46 cảm ơn các anh chị quan tâm. Do muốn tìm hiểu về ADO nên mong các anh chị giúp đỡ
Trước khi đặt câu hỏi dhn46 đã thử nghiệm với Code sau
Mã:
Sub Tonghop()
    Dim lsSQL As String, cnn As Object, lrs As Object, Str As String
    Set cnn = CreateObject("ADODB.Connection")
    Set lrs = CreateObject("ADODB.Recordset")
    With cnn
        .ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                            "Data Source=" & ThisWorkbook.FullName & _
                            ";Extended Properties=""Excel 8.0;HDR=No;"";"
        .Open
    End With
    
    For Each Wks In ThisWorkbook.Worksheets
        Str = Str & "UNION ALL SELECT F1 FROM [" & Wks.Name & "$A2:A65536] Where f1 Is Not Null "
    Next
    
    lsSQL = "SELECT * FROM [" & ActiveSheet.Name & "$A2:A65536]" & _
            "LEFT JOIN (select f1, COUNT(f1) FROM (" & Right(Str, Len(Str) - 9) & ") group by f1) as SubTable " & _
            "ON [" & ActiveSheet.Name & "$A2:A65536].f1 = SubTable.f1"
    lrs.Open lsSQL, cnn, 3, 1
    
    With Sheet1
        .[D2:D1000].ClearContents
        .[D2].CopyFromRecordset lrs
    End With
    
    lrs.Close: Set lrs = Nothing
    cnn.Close: Set cnn = Nothing
End Sub
(Chưa xét tới trường hợp có Name hay tên Sheet dạng số để bắt lỗi)
Thì kết quả thu được gồm 3 cột: 2 cột đầu là mã số trong Sheet1, cột thứ 3 là kết quả đếm được. DHN46 chưa tìm được cách để "Select f3" gán vào cột Đếm.
Mong anh chị trợ giúp cho trường hợp trên.

To VetMini: cảm ơn anh đã quan tâm, qua các bài viết có lẽ anh rất giỏi trong việc tạo dựng CSDL. Nếu anh có nhiều thời gian hơn mong anh cùng chung tay xây dựng GPE, và "bật mí" nhiều hơn nữa cho những người không chuyên như dhn46. Chúc anh sức khỏe, thành công!

Cảm ơn GPE!
 
...
Theo lô gic, bạn có thể dùng 1 trong những cách sau:

1. Dùng lệnh UPDATE Sheet 1, LEFF JOIN với Sheet 2, LEFF JOIN với Sheet 3, LEFF JOIN với Sheet 4,...

2. Gói câu lệnh UNION các Sheet 2, 3, 4,... vào một subquery và chèn vào lênh UPDATE ... INNER JOIN trên

3. UPDATE Sheet 1, set cái field cần tổng thành 0. Sau đó dùng vòng lặp UPDATE Sheet 1 bằng cách tuần tự cộng thêm trị từ các Sheets 2, 3, 4...

Lô gic thì như vậy, nhưng khi tôi thử thì mới cách 1 đã bị sai tá hoả, tôi không có thì giờ thử tiếp.

Hỏi lòng vòng thì được một người bạn trả lời như sau:

Excel ADO sử dụng cỗ máy SQL của Access. Theo luật Access, nếu JOIN nhiều hơn 2 bảng thì phải đóng trong dấu ngoặc

UPDATE (((Sheet 1), LEFF JOIN với Sheet 2), LEFF JOIN với Sheet 3), LEFF JOIN với Sheet 4

Access, khổ vì mày!!!!
 
Hỏi lòng vòng thì được một người bạn trả lời như sau:

Excel ADO sử dụng cỗ máy SQL của Access. Theo luật Access, nếu JOIN nhiều hơn 2 bảng thì phải đóng trong dấu ngoặc

UPDATE (((Sheet 1), LEFF JOIN với Sheet 2), LEFF JOIN với Sheet 3), LEFF JOIN với Sheet 4

Access, khổ vì mày!!!!
Chào anh VetMini.
Cảm ơn anh đã gợi ý cách giải quyết vấn đề nhưng dhn46 vẫn chưa áp dụng được gợi ý của anh. Nếu có thể anh cho 1 lệnh truy vấn mẫu để dhn46 suy đoán và áp dụng.
 
Nếu chỉ đếm xem ở sheet2, 3, 4 có bao nhiêu lần xuất hiện của mã số và cập nhật Sheet1 (viết tắt Sheet1 lá S1, Sheet2 là S2... cho nhanh):

Update S1 set Dem=tt2.Dem From S1 as tt1 Inner Join (
Select t1.MS, count(t2.MS)+count(t3.MS)+count(t4.MS) As Dem
From S1 As t1 Left Join S2 As t2 on t1.MS=t2.MS Left Join S3 As t3 on t1.MS=t3.MS Left Join S4 As t4 on t1.MS=t4.MS
Group By t1.MS ) As tt2 on tt2.MS = tt1.MS

Hàm count tự động loại bỏ null nên dùng vời Left Join không có vấn đề

Lưu ý là câu truy vấn trên viết cho SQL tiêu chuẩn. Access không thích lệnh join nhiều hơn 2 bảng nên phải dùng dấu ngoặc

From S1 As t1 Left Join S2 As t2 on t1.MS=t2.MS Left Join S3 As t3 on t1.MS=t3.MS Left Join S4 As t4 on t1.MS=t4.MS

phải viết là

From ((S1 As t1 Left Join S2 As t2 on t1.MS=t2.MS) Left Join S3 As t3 on t1.MS=t3.MS) Left Join S4 As t4 on t1.MS=t4.MS
 
Copy range từ csv file lên excel, vẽ đồ thị sau đó lưu vào file excel khác!

Hi All,

Em là thành viên mới mong mọi người giúp đỡ, em có công việc như sau:
1/ Kết nối đến file csv (chứa dữ liệu được xuất ra tự động từ máy đo), copy range B19:B26.
2/ Paste dữ liệu lên range C4 sheet 1 của file xlsm "SourceFile", vẽ đồ thị ( phần vẽ đồ thị em làm được).
3/ Lưu dữ liệu vào file excel xlsm DesFile đang đóng.

Em đã làm được theo cách Open file, thao tác sau đó đóng file tuy nhiên tốc độ chậm.
Mong mọi người giúp đỡ em code để thực hiện thao tác trên!
Hiện tại em tham khảo được module copy data từ excel:
Public Sub GetDataADO(SourceFile As Variant, SourceSheet As String, SourceRange As String, desRange As Range)
Dim rsCon As Object: Dim rsData As Object: Dim szConnect As String: Dim szSQL As String
' Create the connection string
szConnect = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source=" & SourceFile & ";" & _
"Extended Properties=""Excel 12.0;HDR=No"";"
szSQL = "SELECT * FROM [" & SourceSheet$ & "$" & SourceRange$ & "];"
On Error GoTo SomethingWrong
Set rsCon = CreateObject("ADODB.Connection")
Set rsData = CreateObject("ADODB.Recordset")
rsCon.Open szConnect: rsData.Open szSQL, rsCon, 0, 1, 1
' Check to make sure we received data and copy the data
If Not rsData.EOF Then
desRange.CopyFromRecordset rsData
Else: MsgBox "No records returned from : " & SourceFile, vbCritical
End If
' Clean up our Recordset object.
rsData.Close: Set rsData = Nothing
rsCon.Close: Set rsCon = Nothing
Exit Sub
SomethingWrong:
MsgBox "The file name, Sheet name or Range is invalid of : " & SourceFile, vbExclamation, "Error"
On Error GoTo 0
End Sub

Em đang cần một module tương tự cho việc lấy dữ liệu từ csv file và đẩy xuống xlsx file.

Thanks!
BestRegard!
 

File đính kèm

  • csvFiledata.rar
    12.6 KB · Đọc: 24
Hi All,

Em là thành viên mới mong mọi người giúp đỡ, em có công việc như sau:
1/ Kết nối đến file csv (chứa dữ liệu được xuất ra tự động từ máy đo), copy range B19:B26.
2/ Paste dữ liệu lên range C4 sheet 1 của file xlsm "SourceFile", vẽ đồ thị ( phần vẽ đồ thị em làm được).
3/ Lưu dữ liệu vào file excel xlsm DesFile đang đóng.

Em đã làm được theo cách Open file, thao tác sau đó đóng file tuy nhiên tốc độ chậm.
Mong mọi người giúp đỡ em code để thực hiện thao tác trên!

Em đang cần một module tương tự cho việc lấy dữ liệu từ csv file và đẩy xuống xlsx file.

Thanks!
BestRegard!

Để đọc dữ liệu từ file cvs , bạn có thể dùng nhiều cách , còn muốn dùng ADO thì tham khảo code sau :
[GPECODE=vb]
Sub GPE()
Dim cnn As ADODB.Connection
Dim rst As ADODB.Recordset
Set cnn = New ADODB.Connection
Set rst = New ADODB.Recordset
With cnn
.CursorLocation = 3
.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & ThisWorkbook.Path & "\" & ";" & _
"Extended Properties=""text;HDR=YES;FMT=Delimited"""
End With

rst.Open "SELECT * FROM 001.csv", cnn, 3, 3, adCmdText
Range("A1:D100").ClearContents
Range("A1").CopyFromRecordset rst
rst.Close: Set rst = Nothing
cnn.Close: Set cnn = Nothing
End Sub
[/GPECODE]
 
Web KT
Back
Top Bottom