Menu

Tự động cập nhật dữ liệu Excel từ Access bằng VBA - Kinh nghiệm thực tế

Nhữ Thanh Hà 12/06/2026 10:56 288 lượt xem 3 trả lời

Chào mọi người, mình là thành viên mới và cũng là người thường xuyên làm việc với Excel và Access. Gần đây, mình có một dự án cần liên tục cập nhật dữ liệu từ một file Access vào file Excel báo cáo chính. Sau một thời gian tìm tòi và thử nghiệm, mình đã tìm ra cách tự động hóa việc này bằng VBA mà không cần can thiệp thủ công.

Phương pháp này khá đơn giản nhưng hiệu quả, đặc biệt khi bạn có một database Access tương đối ổn định và muốn lấy dữ liệu vào Excel để phân tích hoặc làm báo cáo nhanh chóng. Cách này sẽ giúp bạn tiết kiệm rất nhiều thời gian so với việc copy-paste thủ công mỗi lần.

Các bước cơ bản mình thực hiện như sau:

  • Mở trình soạn thảo VBA trong Excel (Alt + F11).
  • Tạo một Module mới.
  • Viết code để kết nối với file Access.
  • Sử dụng câu lệnh SQL để truy vấn dữ liệu mong muốn.
  • Ghi dữ liệu trả về vào một Sheet cụ thể trong file Excel.
  • Thiết lập để code chạy tự động khi mở file hoặc theo một sự kiện nào đó.

Một đoạn code ví dụ để tham khảo:

Sub UpdateDataFromAccess()
    Dim db As DAO.Database
    Dim rs As DAO.Recordset
    Dim ws As Worksheet
    
    Set ws = ThisWorkbook.Sheets("Sheet1") ' Thay "Sheet1" bằng tên Sheet bạn muốn ghi dữ liệu
    Set db = OpenDatabase("C:\Path\To\Your\Database.accdb") ' Thay đường dẫn file Access
    
    Set rs = db.OpenRecordset("SELECT * FROM YourTable") ' Thay "YourTable" bằng tên Table/Query trong Access
    
    ' Xóa dữ liệu cũ trước khi ghi mới
    ws.Cells.ClearContents
    
    ' Ghi tiêu đề (nếu có)
    Dim i As Integer
    For i = 0 To rs.Fields.Count - 1
        ws.Cells(1, i + 1).Value = rs.Fields(i).Name
    Next i
    
    ' Ghi dữ liệu
    ws.Cells(2, 1).CopyFromRecordset rs
    
    rs.Close
    db.Close
    
    MsgBox "Dữ liệu đã được cập nhật thành công!", vbInformation
End Sub

Lưu ý: Bạn cần thêm tham chiếu đến Microsoft DAO 3.6 Object Library (hoặc phiên bản mới hơn tùy thuộc vào Office của bạn) trong VBA Editor để sử dụng các đối tượng như DAO.DatabaseDAO.Recordset.

Cách này rất hữu ích cho các bạn làm báo cáo thường xuyên. Ai có kinh nghiệm hoặc cách làm khác hay hơn thì chia sẻ cùng mình nhé!

5
Hay quá bạn ơi! Mình cũng đang đau đầu với việc đồng bộ dữ liệu giữa Excel và Access đây. Bạn có thể chia sẻ cụ thể hơn về đoạn code VBA bạn dùng không? Mình đang muốn tự động hóa một quy trình tương tự để đỡ mất công copy-paste thủ công. Cảm ơn bạn nhiều nhé!
2

Đúng là một chủ đề rất hay và thực tế! Việc tự động cập nhật dữ liệu từ Access sang Excel bằng VBA giúp tiết kiệm bao nhiêu thời gian và công sức. Mình cũng từng gặp tình huống tương tự, và đúng là việc này mang lại hiệu quả rõ rệt.

Bạn có thể chia sẻ thêm về cách bạn xử lý trường hợp nếu cấu trúc bảng trong Access có thay đổi nhỏ không? Liệu code có cần điều chỉnh nhiều không hay có cách nào để code linh hoạt hơn?

5

Tuyệt vời! Việc tự động hóa cập nhật dữ liệu giữa Access và Excel bằng VBA là một kỹ năng rất hữu ích. Mình cũng đã từng làm qua vài dự án tương tự và thấy nó giải quyết được rất nhiều vấn đề về thủ công.

Bạn có thể chia sẻ thêm về cách bạn xử lý lỗi nếu đường dẫn file Access thay đổi hoặc file Access bị khóa không? Đôi khi đây là những tình huống phát sinh ngoài ý muốn mà mình gặp phải.

4

Bạn cần đăng nhập để trả lời chủ đề này.

Đăng nhập Đăng ký