Menu

App script quản lý rủi ro cho cá nhân & doanh nghiệp với báo cáo chuẩn định dạng biểu đồ

Tự động hóa trích xuất dữ liệu báo cáo từ MS Access vào Excel bằng VBA

Vương Hà Kiến 11/04/2026 05:01 197 lượt xem 3 trả lời

Chào các anh em trong diễn đàn,

Dạo này mình có dự án cần xử lý báo cáo hàng ngày từ một database MS Access. Việc copy-paste thủ công từng bảng dữ liệu sang Excel rất tốn thời gian và dễ sai sót. Sau một thời gian mày mò, mình đã viết được một đoạn code VBA để tự động hóa việc này.

Mục tiêu của code:

  • Kết nối tới file Access chỉ định.
  • Chạy một truy vấn (query) đã định nghĩa sẵn trong Access để lấy dữ liệu cần thiết.
  • Xuất kết quả truy vấn ra một sheet Excel cụ thể.
  • Tự động định dạng lại cột, xóa các dòng trống (nếu có).

Code minh họa (đơn giản hóa):

Sub ExportAccessData()
    Dim db As DAO.Database
    Dim rs As DAO.Recordset
    Dim cn As Object
    Dim strSQL As String
    Dim ws As Worksheet

    Set ws = ThisWorkbook.Sheets("BaoCao") ' Đặt tên sheet nhận dữ liệu
    Set db = OpenDatabase("C:\[Du
		Lieu]\[TenFile].accdb") ' Thay đường dẫn file Access

    strSQL = "SELECT * FROM TenTruyVan; " ' Thay TenTruyVan bằng tên query của bạn

    Set rs = db.OpenRecordset(strSQL)

    ws.Cells.ClearContents ' Xóa dữ liệu cũ trên sheet

    If Not rs.EOF Then
        ws.Range("A1").CopyFromRecordset rs
    End If

    rs.Close
    db.Close

    Set rs = Nothing
    Set db = Nothing

    MsgBox "Đã xuất dữ liệu thành công!"
End Sub

Function OpenDatabase(dbPath As String) As DAO.Database
    Dim ws As Worksheet
    Dim cn As Object

    On Error Resume Next
    Set cn = CreateObject("DAO.DBEngine.12.0") ' Hoặc phiên bản phù hợp
    Set OpenDatabase = cn.OpenDatabase(dbPath)
    On Error GoTo 0
End Function

Lưu ý:

  • Bạn cần bật tham chiếu đến Microsoft DAO 3.6 Object Library (hoặc phiên bản mới hơn) trong VBA Editor (Tools -> References).
  • Thay đổi đường dẫn file Access và tên truy vấn cho phù hợp với file của bạn.
  • Code này chỉ là ví dụ cơ bản, bạn có thể tùy chỉnh thêm để xử lý định dạng, lọc dữ liệu, hoặc chạy truy vấn phức tạp hơn.

Hy vọng chia sẻ này hữu ích cho anh em nào đang làm việc với Access và Excel. Nếu có thắc mắc hoặc có cách làm tốt hơn, mọi người cùng thảo luận nhé!

5

Tuyệt vời! Tự động hóa trích xuất dữ liệu từ Access sang Excel bằng VBA đúng là cứu cánh cho dân văn phòng mình. Bạn có thể chia sẻ thêm về cách bạn xử lý lỗi kết nối hoặc định dạng lại cột dữ liệu sau khi xuất không? Mình đang gặp chút khó khăn ở phần này.

5

Rất hay! Tự động hóa bằng VBA thế này đúng là tiết kiệm bao nhiêu thời gian. Mình cũng hay phải làm việc với Access, mà mỗi lần xuất dữ liệu ra Excel đều mất kha khá công sức.

Bạn ơi, đoạn code của bạn có xử lý trường hợp file Access bị khóa mật khẩu không? Mình từng bị kẹt ở chỗ này mấy lần. Nếu có, chia sẻ thêm kinh nghiệm cho anh em với nhé!

4

Hay quá bạn ơi! Tự động hóa trích xuất dữ liệu từ Access sang Excel bằng VBA là một kỹ năng rất hữu ích. Mình cũng đang tìm hiểu về mảng này.

Bạn có thể cho mình biết thêm về cách bạn xử lý các kiểu dữ liệu khác nhau từ Access khi import vào Excel không? Ví dụ như ngày tháng, số thập phân, hay các trường văn bản dài. Đôi khi việc này cũng gây ra một chút rắc rối.

3

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

Đăng nhập Đăng ký