Menu

Tự động hóa việc cập nhật dữ liệu từ nhiều file Excel vào 1 file tổng hợp bằng VBA

Ông Hiếu Phi 11/06/2026 10:12 453 lượt xem 3 trả lời

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

Dạo này công việc của mình liên quan đến việc tổng hợp dữ liệu từ rất nhiều file Excel (mỗi file là dữ liệu của một chi nhánh). Việc copy-paste thủ công từng file vào file tổng hợp tốn rất nhiều thời gian và dễ sai sót. Mình đang tìm hiểu VBA để tự động hóa việc này.

Mình có một đoạn code VBA cơ bản để mở các file trong một thư mục và copy dữ liệu từ một sheet cụ thể sang file tổng hợp. Tuy nhiên, mình gặp một số vấn đề và muốn nhờ mọi người chỉ giáo thêm:

  • Làm sao để xử lý trường hợp có file không có sheet cần lấy dữ liệu?
  • Làm sao để tự động xóa các dòng trống sau khi copy dữ liệu?
  • Có cách nào để kiểm tra xem dữ liệu đã tồn tại trong file tổng hợp chưa trước khi copy để tránh trùng lặp không?

Đây là đoạn code mình đang dùng:

Sub TongHopDuLieu()
    Dim wbTongHop As Workbook
    Dim wsTongHop As Worksheet
    Dim folderPath As String
    Dim fileName As String
    Dim wbNguon As Workbook
    Dim wsNguon As Worksheet
    Dim lastRowTongHop As Long
    Dim lastRowNguon As Long

    Set wbTongHop = ThisWorkbook
    Set wsTongHop = wbTongHop.Sheets("TongHop") ' Đổi tên sheet nếu cần

    folderPath = Application.InputBox("Chọn thư mục chứa các file Excel cần tổng hợp:", "Chọn thư mục", Type:=2)
    If folderPath = "False" Then Exit Sub

    fileName = Dir(folderPath & "	xtName.xlsx") ' Đổi *.xlsx thành *.xls hoặc *.xlsm nếu cần

    Application.ScreenUpdating = False

    Do While fileName <> ""
        If fileName <> wbTongHop.Name Then ' Bỏ qua chính file tổng hợp
            Set wbNguon = Workbooks.Open(folderPath & "	xtName")
            Set wsNguon = wbNguon.Sheets("Sheet1") ' Đổi tên sheet nguồn nếu cần

            lastRowTongHop = wsTongHop.Cells(Rows.Count, "A").End(xlUp).Row
            lastRowNguon = wsNguon.Cells(Rows.Count, "A").End(xlUp).Row

            wsNguon.Range("A2:Z" & lastRowNguon).Copy ' Lấy dữ liệu từ A2 đến Z (hoặc cột cuối cùng)
            wsTongHop.Cells(lastRowTongHop + 1, "A").PasteSpecial xlPasteValues ' Chỉ dán giá trị

            wbNguon.Close SaveChanges:=False
        End If
        fileName = Dir
    Loop

    Application.ScreenUpdating = True
    MsgBox "Tổng hợp dữ liệu hoàn tất!"
End Sub

Rất mong nhận được sự giúp đỡ từ các cao thủ VBA!

Xin cảm ơn!

0

Chào bạn,

Vấn đề tổng hợp dữ liệu từ nhiều file là bài toán rất phổ biến. Mình cũng từng trải qua giai đoạn vất vả với việc copy-paste thủ công. Đoạn code VBA của bạn là một khởi đầu tốt đó!

Để giúp bạn hiệu quả hơn, bạn có thể chia sẻ thêm chi tiết về các vấn đề bạn đang gặp phải không? Ví dụ như:

  • Bạn muốn copy dữ liệu từ sheet nào của các file chi nhánh?
  • Có cần xử lý điều kiện gì trước khi copy không (ví dụ: chỉ copy những dòng có ngày trong tháng này)?
  • Dữ liệu nguồn có cấu trúc giống hệt nhau không?

Nếu bạn cung cấp thêm thông tin, mọi người sẽ dễ dàng đưa ra giải pháp cụ thể hơn.

2

Việc tổng hợp dữ liệu từ nhiều file Excel thực sự là một bài toán đau đầu nếu làm thủ công. Mình cũng từng gặp cảnh tương tự và VBA đúng là cứu cánh trong trường hợp này.

Đoạn code bạn đang làm là rất đúng hướng rồi. Để có thể hỗ trợ bạn tốt hơn, bạn có thể nói rõ hơn về những "vấn đề" bạn đang gặp phải được không? Ví dụ như:

  • Bạn muốn copy dữ liệu từ sheet nào trong các file chi nhánh?
  • Cấu trúc dữ liệu ở các file nguồn có giống nhau hoàn toàn không?
  • Bạn có cần lọc hay xử lý điều kiện gì trước khi copy không?
Càng chi tiết thì mọi người càng dễ dàng đưa ra giải pháp phù hợp cho bạn đó!

0

Việc tự động hóa tổng hợp dữ liệu từ nhiều file như bạn mô tả là một ứng dụng rất thiết thực của VBA. Mình hiểu cảm giác tốn thời gian và dễ sai sót khi làm thủ công.

Bạn có thể chia sẻ rõ hơn về đoạn code VBA bạn đang có và cụ thể là những "vấn đề" nào bạn đang gặp phải không? Ví dụ:

  • Bạn đang gặp lỗi gì cụ thể?
  • Dữ liệu bạn muốn copy nằm ở vị trí nào trong các file nguồn?
  • Bạn có yêu cầu gì về việc định dạng hay làm sạch dữ liệu trước khi đưa vào file tổng hợp không?

Cung cấp thêm thông tin sẽ giúp mọi người đưa ra gợi ý chính xác hơn cho bạn đó!

1

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

Đăng nhập Đăng ký