Cách gộp nhiều file Excel thành một file tổng hợp (kèm Code VBA)

Nội dung được viết bởi Thanh Hằng

Chắc hẳn người sử dụng Excel không ít lần loay hoay không biết làm thể nào để tổng hợp nhiều file Excel riêng lẻ khác nhau thành một file hoàn chỉnh gồm nhiều trang tính. Việc thao tác dùng các hàm như VLOOKUP hay tham chiếu tới các bảng tính Excel khác dường như gây nhiều bất tiện khi người dùng phải mở nhiều file đồng thời. Bài viết này, Gitiho sẽ hướng dẫn các bạn cách gộp nhiều file Excel thành một file duy nhất.

Xem thêm: Tuyệt đỉnh Excel - Khóa học Excel Online giúp bạn Trở thành bậc thầy Excel trong 16 giờ

Sử dụng CODE VBA

Đầu tiên, hãy cho tất cả các file cần tổng hợp vào trong một folder như sau:

Cách gộp nhiều file Excel thành một file tổng hợp (kèm Code VBA)

Tiếp theo,

Mở tệp Excel mới mà bạn muốn tổng hợp cả 4 file trên
 

Các file book1, book2, book3, book4 bao gồm nhiều sheets khác nhau. 

Bạn cần thực hiện thao tác sau đây:

Vào Developer > Visual Basic, cửa sổ Microsoft Visual Basic for applications mở ra. Nhấp vào Insert > Module, sao chép đoạn mã dưới đây vào Module:

Sub GetSheets()

Path = "C:\Users\dt\Desktop\dt kte\"
 
Filename = Dir(Path & "*.xls")
 Do While Filename <> ""
 Workbooks.Open Filename:=Path & Filename, ReadOnly:=True
 For Each Sheet In ActiveWorkbook.Sheets
 Sheet.Copy After:=ThisWorkbook.Sheets(1)
 Next Sheet
 Workbooks(Filename).Close
 Filename = Dir()
 Loop
End Sub

Lưu ý: Trong đoạn Code trên, sau phần " Path = ", trong dấu ngoặc kép (") là thư mục chứa 4 file excel trong ví dụ chúng tôi đã cho, bạn có thể thay đổi bằng đường dẫn thư mục chứa các file bạn đang lưu. Đừng quên thêm dấu "\" sau đường dẫn để Excel có thể nhận định chúng trên cùng một folder.

Cuối cùng, nhấn Run hoặc phím F5 để chạy mã. Kết quả thu được là tất cả trang tính giờ đây sẽ nằm trên cùng một file (một bảng tính) Excel.

Nhược điểm của mã Code này là gộp tất cả các file bạn chọn trong thư mục thành một bảng tính duy nhất, nếu bạn chỉ muốn gộp một vài sheet cụ thể trong các file Excel sẵn có, thì cách thứ 2 sau đây mới dành cho bạn.

Sử dụng mã CODE VBA khác

Thao tác tương tự như trên, bạn chỉ cần thay "mã Code trên" bằng mã Code mới sau:

Sub MergeExcelFiles()    Dim fnameList, fnameCurFile As Variant    Dim countFiles, countSheets As Integer    Dim wksCurSheet As Worksheet    Dim wbkCurBook, wbkSrcBook As Workbook    fnameList = Application.GetOpenFilename(FileFilter:="Microsoft Excel Workbooks (*.xls;*.xlsx;*.xlsm),*.xls;*.xlsx;*.xlsm", Title:="Choose Excel files to merge", MultiSelect:=True)    If (vbBoolean <> VarType(fnameList)) Then        If (UBound(fnameList) > 0) Then            countFiles = 0            countSheets = 0            Application.ScreenUpdating = False            Application.Calculation = xlCalculationManual            Set wbkCurBook = ActiveWorkbook            For Each fnameCurFile In fnameList                countFiles = countFiles + 1                Set wbkSrcBook = Workbooks.Open(Filename:=fnameCurFile)                For Each wksCurSheet In wbkSrcBook.Sheets                    countSheets = countSheets + 1                    wksCurSheet.Copy after:=wbkCurBook.Sheets(wbkCurBook.Sheets.Count)                Next                wbkSrcBook.Close SaveChanges:=False            Next            Application.ScreenUpdating = True            Application.Calculation = xlCalculationAutomatic            MsgBox "Processed " & countFiles & " files" & vbCrLf & "Merged " & countSheets & " worksheets", Title:="Merge Excel files"        End If    Else        MsgBox "No files selected", Title:="Merge Excel files"    End If End Sub

Sử dụng "Move or Copy"

Với những dân không chuyên trong Excel hay không sử dụng được Code phức tạp, thì bạn bắt buộc phải sử dụng tính năng More or Copy để sao chép các trang tính một cách nhanh hơn.

Bước 1: Mở tất cả các file chứa các sheets bạn muốn gộp.

Bước 2: Chọn tất cả các tên trang tính (ví dụ như Sheet 1, Sheet 2,...) trong bảng tính ở thanh tên. Bạn có thể chọn nhiều trang bằng cách nhấn giữ Ctrl hoặc Shift rồi Click chuột trái để chọn. Nhấp chuột phải vào tên một trang tính trong số trang tính đã chọn, chọn Move or Copy như hình dưới đây

Cách gộp nhiều file Excel thành một file tổng hợp (kèm Code VBA)

Hộp thoại Move or Copy sẽ được hiện lên, tại dòng "Move selected sheets to book" bạn chọn tất cả các file Excel riêng lẻ (các bảng tính) mà bạn muốn gộp nhất. Tại phần "Before sheet" bạn chọn vị trí các sheet như hình dưới đây:

Cách gộp nhiều file Excel thành một file tổng hợp (kèm Code VBA)

Cuối cùng, Click OK và kết quả thu được là một bảng tính Excel lớn bao gồm các trang tính bạn đã chọn.

Lưu ý: Lặp lại thao tác với các bảng tính (file Excel riêng lẻ khác) như book2.xlsx, book3.xlsx,... của chúng tôi hay các bảng tính của các bạn để gộp được thành một file Excel lớn duy nhất.

Cách gộp nhiều file Excel thành một file tổng hợp (kèm Code VBA)

Qua bài viết trên, chúng ta thấy VBA là một công cụ hữu hiệu đối với người cần sử dụng Excel trong công việc hàng ngày. Không những thế, VBA còn chứa vô vàn tính năng hỗ trợ bạn không chỉ trong Excel mà còn trong Word, PowerPoint, Outlook,... giúp bạn trở thành dân chuyên trong lĩnh vực tin học văn phòng.

Tham khảo các bài viết, cũng như các khóa học VBA từ cơ bản đến nâng cao của Gitiho để làm chủ các kĩ năng trong Excel tối ưu hóa công việc của bạn:

Nếu công việc của bạn liên quan nhiều đến quản lý, phân tích dữ liệu và làm báo cáo trên bảng tính thì giỏi Excel thôi chưa đủ. Nếu biết thêm về VBA sẽ giúp bạn tiết kiệm tối đa thời gian làm việc nhờ làm báo cáo tự động, phân tích và xử lý số liệu chính xác tuyệt đối, đặc biệt công cần lọ mọ sửa thủ công,…

Tất tần tật những kiến thức từ cơ bản đến nâng cao về cách sử dụng VBA trong Excel sẽ được đề cập trong khóa học VBAG01: Tuyệt đỉnh VBA - Tự động hóa Excel với lập trình VBA tại Gitiho

Hãy nhấn vào Học thử hoặc Đăng ký ngay!

/5 - ( bình chọn)

/5 - ( bình chọn)

0 thảo luận

@ 2020 - Bản quyền của Công ty cổ phần công nghệ giáo dục Gitiho Việt Nam
Giấy chứng nhận Đăng ký doanh nghiệp số: 0109077145, cấp bởi Sở kế hoạch và đầu tư TP. Hà Nội
Giấy phép mạng xã hội số: 588, cấp bởi Bộ thông tin và truyền thông