Sub nhaplieu()
Dim cnn As ADODB.Connection
Dim lrs As ADODB.Recordset
Dim SQLQuery As String
Set cnn = New ADODB.Connection
Set lrs = New ADODB.Recordset
cnn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source= " & ThisWorkbook.FullName & ";Extended Properties=""Excel 8.0;HDR=YES"";"
cnn.Open
SQLQuery = "select * from dulieu"
lrs.Open SQLQuery, cnn
Sheet1.Range("A1").CopyFromRecordset lrs
End Sub
Dạ vâng Gitiho xin giải đáp thắc mắc của Anh/Chị như sau là dựa vào mã code của Anh/Chị thì lỗi có thể xuất phát từ một số nguyên nhân khác nhau. Dưới đây là một số gợi ý để giải quyết vấn đề:
1. Thiếu thư viện: Đảm bảo rằng Anh/Chị đã thêm thư viện Microsoft ActiveX Data Objects vào dự án của mình. Anh/Chị có thể thêm thư viện này bằng cách điều hướng đến "Tools" > "References..." trong VBA Editor và kiểm tra hộp kiểm "Microsoft ActiveX Data Objects x.x Library".
2. Kiểm tra chuỗi kết nối: Đảm bảo chuỗi kết nối của Anh/Chị đúng. Có thể cần chỉnh sửa chuỗi kết nối để phù hợp với cơ sở dữ liệu Excel của Anh/Chị. Đối với các phiên bản Excel mới, Anh/Chị cũng có thể thử "Microsoft.ACE.OLEDB.16.0" thay vì "Microsoft.ACE.OLEDB.12.0".
3. Kiểm tra truy vấn SQL: Đảm bảo rằng truy vấn SQL của Anh/Chị là hợp lệ và cơ sở dữ liệu có bảng tên "dulieu".
Dưới đây là mã code đã chỉnh sửa với một số gợi ý:
Sub nhaplieu()
Dim cnn As ADODB.Connection
Dim lrs As ADODB.Recordset
Dim SQLQuery As String
' Khởi tạo đối tượng Connection và Recordset
Set cnn = New ADODB.Connection
Set lrs = New ADODB.Recordset
' Thiết lập chuỗi kết nối
cnn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=""Excel 12.0 Xml;HDR=YES"";"
' Mở kết nối
cnn.Open
' Thiết lập truy vấn SQL
SQLQuery = "SELECT * FROM [dulieu$]" ' Đảm bảo rằng tên bảng cần trích xuất được đặt trong dấu ngoặc vuông và tiền tố bằng dấu $
' Mở Recordset
lrs.Open SQLQuery, cnn
' Copy dữ liệu vào Sheet1
Sheet1.Range("A1").CopyFromRecordset lrs
' Đóng kết nối và recordset
lrs.Close
cnn.Close
' Giải phóng bộ nhớ
Set lrs = Nothing
Set cnn = Nothing
End Sub