如何使用vba合并多个excel工作簿?
要合并多个 Excel 工作簿,您需要使用一些代码来选择要合并的文件,或者您可以引用特定路径位置并合并当前工作簿中的所有 Excel 文件。
VBA合并多个工作簿
您可以使用以下代码,该代码使用我在路径变量中提到的位置(我的系统桌面上的文件夹)。
Dim Path As String Dim Filename As String Dim Sheet As Worksheet Path = "C:UsersDellDesktopsample-data" Filename = Dir(Path & "*.xlsx") 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
使用 VBA 合并 Excel 文件的步骤
- 打开 Visual Basic 编辑器(如果功能区上已有“开发人员”选项卡,请确保启用它)。
- 之后,从项目窗口(control + r)找到当前工作簿,然后将新模块插入其中。
- 您将在模块中看到一个代码窗口(双击它),您需要在其中粘贴您拥有的代码(按原样)。
- 从这里,您需要使用要合并的所有 Excel 文件所在的文件夹位置更改路径变量的值。
- 最后,运行代码,您将获得当前文件中工作簿中的所有工作表。
有用的链接:运行宏–宏记录器– Visual Basic 编辑器–个人宏手册
此代码将逐个打开每个文件,并逐个复制每个工作表并将其粘贴到具有相同名称的当前文件中。这是相同的代码,但屏幕在开始时更新为 false 以在后端运行所有内容。
Dim Path As String Dim Filename As String Dim Sheet As Worksheet Application.ScreenUpdating = False Path = "C:UsersDellDesktopsample-data" Filename = Dir(Path & "*.xlsx") 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 Application.ScreenUpdating = True End Sub
注意:如果您想了解如何将多个工作簿中的数据合并到一个表中,请务必查看本指南。