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.

Lấy dữ liệu từ File Excel đang đóng bằng VBA H1

Lấy dữ liệu từ File Excel đang đóng bằng ADO VBA H2

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

Lấy dữ liệu từ File Excel đang đóng bằng ADO VBA H3

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

Lấy dữ liệu từ File Excel đang đóng bằng code ADo VBA H4

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:

Cập nhật dữ liệu từ File Excel khác đang đóng H2

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

vote data
TOP