有时我们需要合并不同 Excel 工作簿中的工作表来创建新的报告或合并数据文件。此类操作可以使用标准 MS Excel 工具手动完成,但这可能需要大量时间和精力。让我们考虑如何自动化此过程并加快报告的处理速度。
例如,我们有很多工作簿Excel,我们想要制作 工作表集合 将所有书籍合并到一个文件中。为此,请打开要收集所有工作表的工作簿并添加以下宏代码。
打开 Excel 工作簿(您要在其中收集所有工作表),打开 Visual Basic Editor (Alt+F11), 插入模块VBA ( Insert - Module )并将此宏代码复制到此处:
Sub CombineWorkbooks() 'moonexcel.com.ua 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 等),那么您将需要对宏代码的第九行进行适当的更改。