Cách copy nhiều file thành 1 sheet trong excel

Bạn đã từng nghĩ đến việc gộp 2 hoặc nhiều hơn 2 file excel thành 1 file duy nhất chưa? Đừng lo lắng. Dưới đây mình sẽ hướng dẫn cách kết hợp cực kỳ chuyên nghiệp bằng VBA.

Gộp Nhiều File Excel Thành Một File Bằng VBA.

Đầu tiên, chúng ta tạo 3 file đặt cùng nằm trên 1 folder như hình dưới: 

Trong thư mục bên trên chúng tôi tạo:  File 1 có 5 sheet. File 2 có 2 sheet và file 3 có 1 sheet

Sau khi có file chúng ta sẽ tạo 1 file excel hoàn toàn mới . Vào Developer > Visual Basic. Xuất hiện cửa sổ Microsoft Visual Basic for applications. Nhấp vào Insert > Module và sao chép đoạn mã dưới đây vào Module:

Hoặc nhấn ALT + F11 để mở cửa sổ lập trình và nhấp vào Insert > Module và sao chép đoạn mã dưới đây vào Module:

Sub copy[]
Path = "C:\Users\HP\Desktop\Gop file excel\"
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
    Workbooks[Filename].Close
    Filename = Dir[]
Loop
End Sub

  • Chú ý: Ngay chổ Path = "" : Bên trong dấu ngoặc là đường dẫn của thư mục chứa các file bạn lưu. Và nhớ thêm dấu gạch "\" sau cùng đường dẫn để nó hiểu là 1 folder nhé. 

Cuối cùng nhấn Run hoặc F5 để chạy mã. Tất cả trang tính sẽ được hợp nhất vào 1 file lớn duy nhất.

Bạn có thể thấy là tất cả các sheet của 3 file đã được gộp vào 1 file mới tạo. 

Có thể thấy rằng các sheet có tên sheet 1 và sheet 1 [2] để phân biệt nó chỉ là trùng tên lúc tạo tên sheet chứ dữ liệu hoàn toàn không đổi. 

Tạo Shapes Để Chạy Code VBA

Tạo 1 Shapes để chạy VBA như sau:

Cuối cùng chúng ta muốn chạy Shapes vừa tạo đẹp hơn thì xoá hết các sheet chỉ để lại sheet tạo Shapes của mình. Lưu ý lưu file [book2] dưới dạng Excel Macro-Enabled Workbook. 

Nếu bạn là một nhân viên kế toán, thủ quỹ hoặc thường xuyên phải làm công tác thống kê thì chắc hẳn hay phải tổng hợp các báo cáo, danh sách ...... từ các phòng ban khác thành 01 file tổng đúng không. Nếu thao tác 1 cách thủ công [copy - paste] thì rất mất thời gian. Hãy áp dụng thủ thuật sau đây để tạo file tổng một cách nhanh chóng, tiện lợi nhé.

Giả sử mình có 2 danh sách nhân viên như hình dưới, bạn nên cho vào cùng 1 thư mục để dễ thao tác.

Danh sách 1

Danh sách 2


Cách 1: Sử dụng code VBA

Bước 1: Bạn tạo thêm 01 file đặt tên là Danh sách tổng, mở file đó ra, bấm tổ hợp phím Alt + F11 [đối với Laptop là Fn + Alt +F11]. Chọn tab Insert rồi chọn Module.


Bước 2: Bạn dán đoạn code sau vào Module đó rồi Save lại.

Sub GopFileExcel[]
    Dim FilesToOpen
    Dim x As Integer

    On Error GoTo ErrHandler
    Application.ScreenUpdating = False

    FilesToOpen = Application.GetOpenFilename _
      [FileFilter:="Microsoft Excel Files [*.xlsx], *.xlsx", MultiSelect:=True, Title:="Files to Merge"]

    If TypeName[FilesToOpen] = "Boolean" Then
        MsgBox "No Files were selected"
        GoTo ExitHandler
    End If

    x = 1
    While x  View Macros

Bước 5: Chọn dòng GopFileExcel rồi click chọn Run


Bước 6: Chọn những file cần gộp rồi click Open.

- Hệ thống sẽ gộp các file Excel con vào các Sheet trong file Tổng. 

Bước 7: Thao tác lại giống bước 5 nhưng chọn dòng gopsheet nhé. 

- Hệ thống sẽ gộp các Sheet lại thành 01 Sheet tổng hợp. Bạn căn chỉnh lại cho phù hợp nhé. 

Cách 2: Sử dụng tính năng Move or copy

Với cách này bạn có thể sao chép Sheet từ file này thành 1 Sheet của file khác. Ví dụ mình sẽ sao chép Sheet 1 của Danh sách 2 Vào file Danh sách 1

Bước 1: Mở Danh sách 2, click chuột phải vào Sheet 1 rồi chọn Move or copy. Nếu muốn chọn nhiều Sheet thì bạn giữ Ctrl hoặc Shift rồi click chuột trái để chọn.


Bước 2
- Tại dòng To book, chọn Danh sach 1
- Trong phần Before sheet thì bạn chọn vị trí Sheet 


Sau khi gộp thì các file Excel sẽ thành các Sheet trong file Tổng. Bạn có thể áp dụng code gộp sheet vào cách 2 cho hoàn thiện.

Lời kết: Thủ thuật này khá đơn giản đúng không, hy vọng bài viết này hữu ích đối với các bạn.

Nhận xét bài viết

Có một câu nói mà mình rất thích đó là: "Những gì chúng ta biết trong ngày hôm nay, ngày hôm sau sẽ lỗi thời. Nếu ngừng học tập thì chúng ta sẽ ngừng phát triển".
Con người ta muốn biết, muốn hiểu, muốn thành công thì phải học, học thật nhiều, học suốt đời.

Nếu như bạn chưa hiểu nội dung bài viết hoặc đang khúc mắc khi thao tác thì hãy bình luận phía dưới bài viết để mọi người cùng thảo luận nhé!

Lưu ý không spam link dưới mọi hình thức

Bạn có thể bình luận bằng 3 chế độ:
- Tài khoản Gmail
- Ẩn danh
- Tên tự tạo

Chủ Đề