你会不会有大量Excel工作簿需要合并到一起呢?你可以手动完成这一工作,但这个工作可能会花费你一整天的时间。要完成合并工作,最好使用宏,这样只需花几分钟便可搞定。本文所介绍的技巧将向你说明如何创建这样一个宏,看看如何使用宏来节省你的宝贵时间。
某个微信朋友 在合并很多工作簿时遇到了问题。这些工作簿总数约有300个,保存在同一文件夹中,其中大多数工作簿中只包含一个单独的工作表,但有些工作簿包含多个工作表。这些工作簿中的工作表需要被复制到一个新的工作簿中,一张源工作簿里的表被复制到新工作簿里也独占一个工作表。也就是说所有的源工作簿一共里100张表,那么汇集完成后的新工作簿里除了汇集表外将有100张工作表。
合并数量如此巨量的工作簿的最简单方法——如果经常要这样做的话——是使用宏。一个个手动复制粘贴显然是非常低效的事情。
下面的宏会显示一个对话框,提示你选择要合并的文件。(你可以通过按下Ctrl键单击或鼠标拖选的方法选择多个工作簿)它会使用代码在你所选的工作簿列表中循环,打开每个工作簿并将其中的工作表移动到当前目标工作簿的末尾。
以下代码谨慎使用,不适用所有情况,也不一定适用你的复杂情况
Sub CombineWorkbooks()
Dim FilesToOpen
Dim x As Integer
On Error GoTo ErrHandler
Application.ScreenUpdating = False
FilesToOpen = Application.GetOpenFilename(FileFilter:='MicroSoft Excel文件(*.xls),*.xls', MultiSelect:=True, Title:='要合并的文件')
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会复制工作表的名称并自动根据检测结果附加(2)、(3)等数字编号。工作簿中与其他工作表相关的任何公式也会自动更新的新的名称。
联系客服