Menu

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

Á Thư Ái 07/06/2026 12:11 499 lượt xem 2 trả lời

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

Dạo này mình đang làm một dự án cần tổng hợp dữ liệu từ rất nhiều file Excel báo cáo nhỏ lẻ về một file tổng. Mỗi file báo cáo có cấu trúc tương tự nhau nhưng số lượng dòng thì thay đổi liên tục. Làm thủ công thì mất quá nhiều thời gian và dễ sai sót.

Mình đang nghĩ đến việc dùng VBA để tự động hóa công đoạn này. Ý tưởng là viết một đoạn code để nó có thể duyệt qua một thư mục chứa các file báo cáo, sau đó copy toàn bộ dữ liệu (trừ dòng tiêu đề) từ mỗi file và dán vào một sheet trong file tổng. Sau đó, mình có thể lọc và xử lý tiếp.

Có anh em nào đã từng làm qua việc này hoặc có kinh nghiệm về cách xử lý dữ liệu từ nhiều file Excel bằng VBA chưa? Xin chỉ giáo vài đường cơ bản hoặc gợi ý hướng đi ạ. Mình đang hơi bí ở chỗ làm sao để code có thể tự động nhận diện và copy đúng vùng dữ liệu trong từng file, nhất là khi số dòng không cố định.

Ví dụ cấu trúc file báo cáo như sau:

STT | Tên Sản Phẩm | Số Lượng | Đơn Giá
1 | ABC | 10 | 50000
2 | XYZ | 5 | 100000
...
(có thể có 100 dòng hoặc 1000 dòng tùy file)

Mục tiêu là copy toàn bộ các dòng dữ liệu này vào sheet 'DuLieuTongHop' của file tổng.

Rất mong nhận được sự giúp đỡ từ cộng đồng!

Xin cảm ơn!

4

Hay quá bạn ơi! Mình cũng đang "vật lộn" với việc tổng hợp dữ liệu từ nhiều file đây. Bạn dùng DirWorkbooks.Open là chuẩn rồi. Mình cũng hay dùng Copy kết hợp PasteSpecial xlPasteValues để đảm bảo chỉ lấy giá trị, tránh dính định dạng hay công thức phức tạp.

Tiện đây cho mình hỏi chút, bạn có xử lý trường hợp file báo cáo bị ẩn sheet hoặc có những sheet không cần thiết không? Mình hay gặp tình huống này và đôi khi làm code bị lỗi.

1

Chào bạn,

Vấn đề bạn đang gặp phải rất phổ biến, và VBA đúng là giải pháp tối ưu cho việc này. Mình đã từng làm một dự án tương tự, tự động tổng hợp dữ liệu từ hàng trăm file báo cáo hàng ngày.

Bạn đã nghĩ đến việc sử dụng Dir để duyệt thư mục và Workbooks.Open để mở từng file chưa? Sau đó, bạn có thể dùng CopyPasteSpecial xlPasteValues để lấy dữ liệu. Có cần mình chia sẻ một đoạn code mẫu không?

1

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

Đăng nhập Đăng ký