Hướng Dẫn Cách Lấy Dữ Liệu Từ Một File Excel Khác Đang Đóng bằng ADO VBA Trong Excel
Trong công việc, nhất là những công việc liên quan đến dữ liệu như ngân hàng, tài chính, kế toán và các ngành nghiên cứu, các bạn đã gặp phải trường hợp cần lấy dữ liệu từ một File khác đang đóng có nhiều trường thông tin nhưng chỉ muốn lấy một số trường nhất định. Trong bài viết này, TIN HỌC SAO VIỆT sẽ hướng dẫn các bạn làm thế nào để có thể lấy dữ liệu từ file excel khác đang đóng
Bài viết này tôi sẽ đưa ra một ví dụ về một chương trình mẫu, lấy dữ liệu từ một file Excel đang đóng.
Ta hãy xem xét chương trình dưới đây sẽ thực hiện việc lấy dữ liệu từ một file Excel đang đóng cho vào file excel hiện hành chứa macro.
Các bước thực hiện như sau:
1 Tạo một Module mới và Copy 2 đoạn Code sau dán vào
Sub GetData(CellKQ As Range, sSQL As String)
Dim Cnn As New ADODB.Connection
Dim Rs As New ADODB.Recordset
Dim strConnect As String, Path As String
On Error Resume Next
ChDrive "E:"
ChDrive "D:"
ChDrive "F:"
On Error GoTo 0
Path = Application.GetOpenFilename
strConnect = "Provider=Microsoft.ACE.OLEDB.12.0; " _
& "Data Source = MY_FULL_NAME_FILEDATA; " _
& "Extended Properties='Excel 12.0; HDR=No; IMEX=1'; "
strConnect = Replace(strConnect, "MY_FULL_NAME_FILEDATA", Path)
Cnn.ConnectionString = strConnect
Cnn.Open
Rs.Open sSQL, Cnn, 3, 1
CellKQ.CopyFromRecordset Rs
Rs.Close
Cnn.Close
MsgBox "Cap nhat du lieu hoan tat", vbInformation, "Thong Tin Chuong Trinh - 0901.456.055"
End Sub
Sub ImportFile()
Application.Calculation = xlCalculationManual
Dim sSQL As String
Dim CellKQ As Range
Set CellKQ = ActiveSheet.Range("A8")
With Sheets("BangKeNH")
.AutoFilterMode = False
.Range("A8").Resize(.Range("A500000").End(xlUp).Row, 20).ClearContents
End With
sSQL = "SELECT cdate(f1),f2,f3,f4,f5,f6,f7,f8,f9,val(f10) FROM [Sheet$A2:P]"
Call GetData(CellKQ, sSQL)
Application.Calculation = xlCalculationAutomatic
End Sub
2 Tạo một nút bấm để gọi lệnh tại Sheet muốn ghi dữ liệu vào
Sheet tôi hiện tại có tên BangKeNH, tại đây tôi chèn một Shapes, đặt tên Import File
sau đó nhấp chuột phải vào Shapes và chọn Assign Macro, tiếp theo chọn Macro có tên ImportFile
3 Cách sử dụng
Khi bấm nút này, dữ liệu cũ sẽ được xóa, một cửa sổ yêu cầu chọn File chứa dữ liệu cần lấy, bạn chọn File sau đó chọn Open, ở đây tôi chọn file có tên BangKeNH, và kết quả như hình dưới đây:
Tham khảo các bài viết VBA trong Excel sau:
1 Lập trình VBA từ cơ bản đến nâng cao
2 VBA Căn bản bài 01: Ghi và gắn Macro
3 Code VBA tạo phiếu in lương hàng loạt bằng
4 Tạo Form VBA quản lý sheets trong VBA Excel
5 Code VBA Excel Tự Động Lưu Và Tạo Một Bản Sao Chép Vào Thư Mục Khác
6 [Tự động] Công Cụ Tách Sheet Thành Nhiều File Excel Nhanh
CHO ĐIỂM BÀI VIẾT NÀY