有时我们需要合并不同 Excel 工作簿中的工作表来创建新的报告或合并数据文件。此类操作可以使用标准 MS Excel 工具手动完成,但这可能需要大量时间和精力。让我们考虑如何自动化此过程并加快报告的处理速度。
例如,我们有很多工作簿Excel,我们希望将所有工作簿中的工作表收集到一个文件中。为此,请打开要收集所有工作表的工作簿并添加以下宏代码。
在要收集所有工作表的打开工作簿 Excel 中,打开 Visual Basic Editor (Alt+F11),添加 VBA module (Insert - Module) 和将此代码宏复制到此处:
Sub CombineWorkbooks() Dim FilesToOpen Dim x As Integer On Error GoTo ErrHandler Application.ScreenUpdating = False FilesToOpen = Application.GetOpenFilename _ (FileFilter:="Microsoft Excel Files (*.xls), *.xls", _ MultiSelect:=True, Title:="Files to Merge") If TypeName(FilesToOpen) = "Boolean" Then MsgBox "未选择任何文件!" GoTo ExitHandler End If x = 1 While x <= UBound(FilesToOpen) Workbooks.Open Filename:=FilesToOpen(x) Sheets().Move After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count) x = x + 1 Wend ExitHandler: Application.ScreenUpdating = True Exit Sub ErrHandler: MsgBox Err.Description Resume ExitHandler End Sub
之后,您可以返回Excel并通过菜单Tools - Macro - Macros (Alt+F8)运行我们的宏。将出现一个对话框,您需要在其中选择一个或多个(按住 Ctrl 键)文件,我们要将其工作表添加到当前工作簿中。
如果您使用不同的 Excel 文件扩展名(例如,*.xlsx、*.xlsm、*.xlsb 等),则需要对宏中的第九行代码进行适当的更改。