如何遍历目录中的工作簿,并将数据复制到 Excel 的主工作表中?
作者:互联网
2026-04-14
假设您有一个文件夹中包含多个 Excel 工作簿,需要遍历所有这些文件,并从每个工作簿中相同名称的工作表(例如 Sheet 1)的特定区域复制数据,汇总到一个主工作表中。本指南为您提供了一套详细的 VBA 解决方案,助您在 Excel 中高效简化这一流程。
使用 VBA 代码遍历目录中的工作簿并将数据复制到主工作表
使用 VBA 代码遍历目录中的文件并将数据复制到主工作表
如果您希望将特定文件夹中所有工作簿的 Sheet 1 工作表 A1:D4 区域的数据复制并粘贴到主工作表中,请按以下步骤操作。
1. 在您要创建主工作表的工作簿中,按下 Alt+F11 键,即可打开 Microsoft Visual Basic for Applications 窗口。
2. 在 Microsoft Visual Basic for Applications 窗口中,单击插入> 模块,然后将下方的 VBA 代码复制到代码窗口中。
VBA 代码:遍历文件夹中的文件并将数据复制到主工作表
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 注意:
1)。在代码中,“A1:D4”和“Sheet 1”表示将从所有 Sheet 1 的 A1:D4 区域复制数据到主工作表。而“New Sheet”是新建主工作表的名称。2)。特定文件夹中的 Excel 文件不应处于打开状态。3. 按下 F5 键即可运行代码。
4. 在弹出的浏览窗口中,选择包含您要遍历的文件的文件夹,然后单击确定按钮。参见截图:

随后,系统将在当前工作簿末尾创建一个名为“New Sheet”的主工作表,并将所选文件夹中所有 Sheet 1 工作表的 A1:D4 区域数据汇总至该工作表中。
相关标签:
相关推荐
专题
+ 收藏
+ 收藏
+ 收藏
+ 收藏
+ 收藏
+ 收藏
最新数据
相关文章
如何在 Excel 中插入和删除图片或背景图像
如何在 Excel 中添加或删除误差线?
如何在 Excel 中将文本替换为对应的图片?
如何在 Excel 中快速将小写货币金额转换为大写文字?
在 Excel 中批量自动调整图片以适应单元格——2 种实用方法
在 Excel 中锁定和保护单元格——(简易分步教程)
如何在 Excel 中选择整列(不含标题行或首行)?
如何让 Excel 窗口始终保持在最前面?
如何在 Excel 中对早于或晚于今天的日期应用条件格式?
如何在 Excel 中为相邻单元格非空的行自动添加编号?
AI精选
