Dthang
Dthang
Thảo luận 1 thảo luận
Vỗ tay 0 vỗ tay
Lượt xem 16 lượt xem

thầy cho hỏi khi thực thi module thì bị báo lỗi ở chỗ in đậm?

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
 

Thảo luận 1 câu trả lời
Lượt xem 16 lượt xem
Vỗ tay vỗ tay
Dthang 20:04 - Apr 03, 2024

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

Vỗ tay vỗ tay
Câu hỏi liên quan
© 2020 - Bản quyền của Công Ty Cổ Phần Công Nghệ Giáo Dục Gitiho Việt Nam
Giấy chứng nhận Đăng ký doanh nghiệp số: 0109077145, cấp bởi Sở Kế hoạch và Đầu tư TP. Hà Nội
Giấy phép mạng xã hội số: 588, cấp bởi Bộ Thông tin và Truyền thông