Menu

Tự động lấy dữ liệu từ Oracle Database vào Excel bằng VBA - Kinh nghiệm thực tế

Kiến Phượng Tường 14/06/2026 23:32 356 lượt xem 3 trả lời

Chào các bác, em là thành viên mới của diễn đàn, em làm bên mảng kế toán và thường xuyên phải trích xuất dữ liệu từ hệ thống Oracle để làm báo cáo trên Excel. Trước đây em làm thủ công mất rất nhiều thời gian, nhưng gần đây em có tìm hiểu và áp dụng được VBA để tự động hóa việc này. Em muốn chia sẻ lại cho anh em nào đang dùng Oracle và Excel có thể tham khảo.

Về cơ bản, chúng ta sẽ sử dụng ADO (ActiveX Data Objects) để kết nối Excel với Oracle Database. Cần lưu ý là máy tính của bạn cần cài đặt Oracle Client và cấu hình TNSNames.ora cho đúng.

Đây là một đoạn code VBA ví dụ để lấy dữ liệu từ một bảng:

Sub GetDataFromOracle()
    Dim cn As Object ' ADODB.Connection
    Dim rs As Object ' ADODB.Recordset
    Dim strConn As String
    Dim strSQL As String

    ' Chuỗi kết nối Oracle (thay thế bằng thông tin của bạn)
    strConn = "Provider=OraOLEDB.Oracle;Data Source=YOUR_TNS_NAME;User ID=YOUR_USERNAME;Password=YOUR_PASSWORD;"

    ' Câu lệnh SQL (thay thế bằng bảng/view và điều kiện của bạn)
    strSQL = "SELECT * FROM YOUR_TABLE WHERE YOUR_CONDITION"

    Set cn = CreateObject("ADODB.Connection")
    Set rs = CreateObject("ADODB.Recordset")

    cn.Open strConn
    rs.Open strSQL, cn

    ' Đổ dữ liệu ra Sheet Excel (bắt đầu từ ô A1)
    If Not rs.EOF Then
        Sheet1.Range("A1").CopyFromRecordset rs
    End If

    rs.Close
    cn.Close

    Set rs = Nothing
    Set cn = Nothing

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

Lưu ý:

  • Bạn cần thay thế YOUR_TNS_NAME, YOUR_USERNAME, YOUR_PASSWORD, YOUR_TABLEYOUR_CONDITION bằng thông tin thực tế của bạn.
  • Để sử dụng code này, bạn cần bật tham chiếu đến Microsoft ActiveX Data Objects x.x Library trong VBA Editor (Tools -> References). Hoặc bạn có thể dùng cách CreateObject như trên để tránh lỗi tham chiếu.
  • Code này chỉ là ví dụ cơ bản, bạn có thể mở rộng thêm để xử lý lỗi, cập nhật dữ liệu theo ngày, hoặc kết nối với các view phức tạp hơn.

Hy vọng chia sẻ này hữu ích cho các bác. Nếu có ai có kinh nghiệm kết nối Excel với các CSDL khác như SQL Server, MySQL, PostgreSQL thì chia sẻ thêm cho anh em học hỏi nhé!

0

Việc tự động hóa lấy dữ liệu từ Oracle vào Excel bằng VBA với ADO thực sự là một giải pháp tuyệt vời, giúp tiết kiệm bao nhiêu thời gian làm thủ công!

Mình cũng từng gặp khó khăn với việc cài đặt driver ODBC, nhất là khi phiên bản Oracle với Excel không tương thích. Bạn có thể cho mọi người biết thêm về cách kiểm tra và cài đặt phiên bản driver ODBC phù hợp không? Ví dụ như với Oracle 11g thì nên dùng driver nào?

Cảm ơn bạn đã chia sẻ kinh nghiệm rất hữu ích này!

3

Chào bạn,

Cảm ơn bạn đã chia sẻ kinh nghiệm rất hay về việc tự động hóa lấy dữ liệu từ Oracle vào Excel bằng VBA. Mình cũng đang làm việc với dữ liệu lớn từ các hệ thống khác và luôn tìm cách tối ưu hóa quy trình.

Bạn có thể chia sẻ thêm về cách xử lý lỗi (error handling) khi kết nối và truy vấn dữ liệu từ Oracle bằng ADO không? Đôi khi kết nối bị ngắt hoặc truy vấn sai cú pháp có thể gây ra nhiều rắc rối.

Chúc bạn có nhiều đóng góp hữu ích cho diễn đàn!

3

Hay quá bạn ơi! Mình cũng hay phải làm báo cáo từ dữ liệu Oracle mà trước giờ toàn làm thủ công. Cách dùng VBA với ADO này nghe rất triển vọng.

Bạn có thể chia sẻ thêm về phần cài đặt driver ODBC cho Oracle trên máy tính được không? Mình hơi mù mờ phần này, sợ cài sai lại mất công.

Cảm ơn bạn đã chia sẻ kinh nghiệm quý báu nhé!

0

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

Đăng nhập Đăng ký