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 cập nhật dữ liệu Excel từ MySQL bằng VBA - Chia sẻ kinh nghiệm

Hàn Anh Diệu 06/04/2026 20:35 429 lượt xem 3 trả lời

Chào các bác, dạo này em đang làm việc với một dự án cần lấy dữ liệu từ cơ sở dữ liệu MySQL để cập nhật vào Excel hàng ngày. Em đã thử dùng Power Query nhưng gặp một số hạn chế nhất định về tùy biến. Sau khi tìm hiểu, em đã áp dụng thành công VBA để kết nối và tự động hóa việc này.

Em xin chia sẻ lại các bước cơ bản để các bác nào đang cần có thể tham khảo:

  • Bước 1: Chuẩn bị
    • Cài đặt MySQL Connector/ODBC driver trên máy tính của bạn.
    • Đảm bảo bạn có quyền truy cập vào cơ sở dữ liệu MySQL.
  • Bước 2: Viết mã VBA

    Trong VBA Editor (Alt + F11), bạn cần thêm một tham chiếu đến Microsoft ActiveX Data Objects x.x Library. Sau đó, sử dụng đoạn mã tương tự như sau:

    Sub UpdateDataFromMySQL()
        Dim conn As ADODB.Connection
        Dim rs As ADODB.Recordset
        Dim strConn As String
        Dim strSQL As String
    
        ' Chuỗi kết nối (thay đổi thông tin cho phù hợp)
        strConn = "Driver={MySQL ODBC 8.0 Unicode Driver};Server=your_server_name;Database=your_database_name;Uid=your_username;Pwd=your_password;"
    
        ' Câu lệnh SQL (thay đổi theo bảng/yêu cầu của bạn)
        strSQL = "SELECT * FROM your_table_name"
    
        Set conn = New ADODB.Connection
        conn.Open strConn
    
        Set rs = New ADODB.Recordset
        rs.Open strSQL, conn, adOpenStatic, adLockReadOnly
    
        ' Xóa dữ liệu cũ trên sheet Excel (nếu cần)
        Sheets("Sheet1").Cells.ClearContents
    
        ' Đổ dữ liệu vào Excel
        Sheets("Sheet1").Cells(1, 1).CopyFromRecordset rs
    
        rs.Close
        conn.Close
    
        Set rs = Nothing
        Set conn = Nothing
    
        MsgBox "Cập nhật dữ liệu thành công!"
    End Sub

Lưu ý: Bạn cần thay thế các thông tin như tên server, tên database, username, password và tên bảng cho phù hợp với hệ thống của mình.

Bước 3: Tự động hóa (Tùy chọn)

Bạn có thể gán macro này cho một nút bấm trên giao diện Excel hoặc thiết lập lịch chạy tự động bằng Task Scheduler của Windows để file Excel của bạn luôn được cập nhật.

Cách này khá hữu ích cho các báo cáo cần dữ liệu mới nhất. Có bác nào có kinh nghiệm tương tự hoặc có cách nào tối ưu hơn không, chia sẻ cho em với ạ!

5

Tuyệt vời! Cảm ơn bạn đã chia sẻ cách tự động hóa cập nhật dữ liệu Excel từ MySQL bằng VBA. Mình rất đồng ý là Power Query có những hạn chế nhất định khi cần tùy biến sâu.

Phần VBA này đúng là giải pháp mạnh mẽ. Mình cũng từng làm qua cách này và thấy rất hiệu quả. Bạn có thể cho mình hỏi thêm về cách bạn xử lý các kiểu dữ liệu khác nhau từ MySQL khi nạp vào Excel không? Ví dụ như ngày tháng, số thập phân, hay chuỗi có ký tự đặc biệt chẳng hạn?

1

Chào bạn,

Cảm ơn bạn đã chia sẻ kinh nghiệm rất hữu ích về việc tự động hóa cập nhật dữ liệu Excel từ MySQL bằng VBA. Mình cũng đang gặp vấn đề tương tự và Power Query có vẻ chưa đáp ứng hết được nhu cầu tùy biến.

Bạn có thể chia sẻ thêm về phần "Viết m..." được không? Mình tò mò muốn biết bạn đã xử lý các trường hợp lỗi, hoặc cách bạn tối ưu hóa tốc độ truy vấn dữ liệu như thế nào.

Chúc bạn có những dự án thành công!

3

Tuyệt vời, bài chia sẻ của bạn rất hữu ích cho những ai đang cần tự động hóa quy trình làm việc với dữ liệu từ MySQL.

Mình cũng từng gặp khó khăn với Power Query khi cần tùy biến sâu, nên cách dùng VBA của bạn rất đáng để tham khảo.

Bạn có thể chia sẻ thêm về cách bạn xử lý lỗi kết nối hoặc các trường hợp dữ liệu không đồng nhất từ MySQL sang Excel không? Mình nghĩ đây cũng là một vấn đề nhiều người quan tâm.

3

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

Đăng nhập Đăng ký