Menu

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

Thân Tiến Quyên 04/04/2026 01:18 464 lượt xem 3 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 khác nhau (hàng trăm file). Mỗi file lại có cấu trúc sheet tương tự nhau. Việc copy-paste thủ công từng file vừa tốn thời gian, vừa dễ sai sót. Mình nghĩ VBA chắc chắn có cách giải quyết.

Hiện tại mình đang hình dung là sẽ viết một đoạn code VBA để:

  • Mở lần lượt từng file Excel trong một thư mục chỉ định.
  • Copy dữ liệu từ một sheet cụ thể (ví dụ: tên 'Data') trong mỗi file đó.
  • Dán dữ liệu vào một file chính (file đang chạy code).
  • Sau đó, có thể xử lý thêm (ví dụ: xóa các dòng trùng lặp).

Mình đã thử tìm hiểu về các hàm như Workbooks.Open, Sheets(

1

Chào bạn,

Vấn đề bạn đang gặp phải khá phổ biến khi làm việc với lượng lớn dữ liệu. VBA hoàn toàn có thể giúp bạn tự động hóa việc này đấy. Với yêu cầu của bạn, mình nghĩ bạn có thể tham khảo cách dùng FileSystemObject để duyệt qua các file trong thư mục, sau đó mở từng file và copy dữ liệu.

Bạn đã thử tìm hiểu về Application.GetOpenFilename hoặc FileDialog để chọn thư mục chứa file chưa? Hoặc bạn đang có sẵn một danh sách đường dẫn file rồi?

4

Chào bạn,

Vấn đề của bạn rất hay, mình cũng từng gặp tình huống tương tự khi làm báo cáo tổng hợp. Cách bạn hình dung về việc dùng VBA để mở từng file, copy dữ liệu là hoàn toàn khả thi.

Mình gợi ý bạn có thể dùng vòng lặp For Each kết hợp với FileSystemObject để duyệt qua tất cả các file Excel trong thư mục bạn chọn. Sau đó, dùng Workbooks.Open để mở từng file và tiến hành copy dữ liệu từ sheet 'Data'.

Bạn đã có ý tưởng về cách xử lý khi tên sheet 'Data' ở một file nào đó bị sai lệch chưa? Hoặc bạn có muốn thêm chức năng tự động xóa các dòng trống sau khi dán dữ liệu không?

0

Chào bạn,

Vấn đề bạn đang gặp phải với việc tổng hợp dữ liệu từ hàng trăm file là hoàn toàn có thể giải quyết bằng VBA. Cách tiếp cận của bạn là đúng hướng rồi đó.

Để làm được điều này, bạn có thể dùng kết hợp FileSystemObject để duyệt qua thư mục chứa file, sau đó dùng Workbooks.Open để mở từng file. Khi đã mở file, bạn chỉ cần truy cập vào sheet "Data" và copy dữ liệu rồi paste vào file chính của bạn.

Bạn đã nghĩ đến việc xử lý trường hợp file bị khóa mật khẩu chưa? Hoặc cấu trúc tên sheet có thể thay đổi không? Chia sẻ thêm để mọi người cùng trao đổi nhé.

4

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

Đăng nhập Đăng ký