Làm cách nào để lặp qua các tệp trong một thư mục và sao chép dữ liệu vào một trang tính chính trong Excel?
Giả sử có nhiều sổ làm việc Excel trong một thư mục và bạn muốn lặp lại tất cả các tệp Excel này và sao chép dữ liệu từ dải bảng tính cùng tên được chỉ định vào một trang tính chính trong Excel, bạn có thể làm gì? Bài viết này giới thiệu một phương pháp để đạt được nó một cách chi tiết.
Lặp qua các tệp trong một thư mục và sao chép dữ liệu vào một trang tính chính với mã VBA
Lặp qua các tệp trong một thư mục và sao chép dữ liệu vào một trang tính chính với mã VBA
Nếu bạn muốn sao chép dữ liệu được chỉ định trong phạm vi A1: D4 từ tất cả sheet1 của sổ làm việc trong một thư mục nhất định vào một trang tính chính, vui lòng thực hiện như sau.
1. Trong sổ làm việc, bạn sẽ tạo một trang tính chính, hãy nhấn Khác + F11 phím để mở Microsoft Visual Basic cho các ứng dụng cửa sổ.
2. bên trong Microsoft Visual Basic cho các ứng dụng cửa sổ, nhấp Chèn > Mô-đun. Sau đó sao chép mã VBA bên dưới vào cửa sổ mã.
Mã VBA: lặp qua các tệp trong một thư mục và sao chép dữ liệu vào một trang tính chính
Sub Merge2MultiSheets()
Dim xRg As Range
Dim xSelItem As Variant
Dim xFileDlg As FileDialog
Dim xFileName, xSheetName, xRgStr As String
Dim xBook, xWorkBook As Workbook
Dim xSheet As Worksheet
On Error Resume Next
Application.DisplayAlerts = False
Application.EnableEvents = False
Application.ScreenUpdating = False
xSheetName = "Sheet1"
xRgStr = "A1:D4"
Set xFileDlg = Application.FileDialog(msoFileDialogFolderPicker)
With xFileDlg
If .Show = -1 Then
xSelItem = .SelectedItems.Item(1)
Set xWorkBook = ThisWorkbook
Set xSheet = xWorkBook.Sheets("New Sheet")
If xSheet Is Nothing Then
xWorkBook.Sheets.Add(after:=xWorkBook.Worksheets(xWorkBook.Worksheets.Count)).Name = "New Sheet"
Set xSheet = xWorkBook.Sheets("New Sheet")
End If
xFileName = Dir(xSelItem & "\*.xlsx", vbNormal)
If xFileName = "" Then Exit Sub
Do Until xFileName = ""
Set xBook = Workbooks.Open(xSelItem & "\" & xFileName)
Set xRg = xBook.Worksheets(xSheetName).Range(xRgStr)
xRg.Copy xSheet.Range("A65536").End(xlUp).Offset(1, 0)
xFileName = Dir()
xBook.Close
Loop
End If
End With
Application.DisplayAlerts = True
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
Chú thích:
3. Nhấn nút F5 phím để chạy mã.
4. Trong phần mở đầu Xem cửa sổ, vui lòng chọn thư mục chứa các tệp bạn sẽ lặp lại, sau đó nhấp vào OK cái nút. Xem ảnh chụp màn hình:
Sau đó, một trang tính chính có tên “Trang tính mới” được tạo ở cuối sổ làm việc hiện tại. Và dữ liệu trong phạm vi A1: D4 của tất cả Sheet1 trong thư mục đã chọn được liệt kê bên trong trang tính.
Các bài liên quan:
Công cụ năng suất văn phòng tốt nhất
Nâng cao kỹ năng Excel của bạn với Kutools for Excel và trải nghiệm hiệu quả hơn bao giờ hết. Kutools for Excel cung cấp hơn 300 tính năng nâng cao để tăng năng suất và tiết kiệm thời gian. Bấm vào đây để có được tính năng bạn cần nhất...
Tab Office mang lại giao diện Tab cho Office và giúp công việc của bạn trở nên dễ dàng hơn nhiều
- Cho phép chỉnh sửa và đọc theo thẻ trong Word, Excel, PowerPoint, Publisher, Access, Visio và Project.
- Mở và tạo nhiều tài liệu trong các tab mới của cùng một cửa sổ, thay vì trong các cửa sổ mới.
- Tăng 50% năng suất của bạn và giảm hàng trăm cú nhấp chuột cho bạn mỗi ngày!