使用VBA一键瞬间合并多个EXCEL工作簿,省时省力又省心
最近一位同学让我付费给他写一段VBA代码,功能就是合并同一文件夹下的所有工作簿的第一个工作表到同一个工作簿中去,我大概花了二十多分钟将功能基本写出来了,又花了点时间研究优化代码,最后大功告成。
合并工作簿的功能应该是日常工作场景用的比较多的,这里干货君将代码贡献出来,有需要的同学可以直接复制粘贴使用。
代码如下:
Sub merge_workbooks()
Dim str As String
Dim wb As Workbook
spath = InputBox('请输入需要合并工作簿的文件路径,比如文件在D盘的a文件夹下,则输入D:\a')
str = Dir(spath & '\*.xls*')
Application.DisplayAlerts = False
For i = 1 To 200
Set wb = Workbooks.Open(spath & '\' & str)
wb.Sheets(1).Copy after:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count).Name = Split(str, '.')(0)
wb.Close
str = Dir
If str = '' Then
Exit For
End If
Next
ThisWorkbook.Sheets(1).Select
MsgBox ('恭喜!工作簿已经成功合并!')
Application.DisplayAlerts = True
End Sub
代码的具体使用方法如下:
1、首先新建一个工作簿,打开“开发工具”选项卡下的“visual basic”工具。
2、在visual basic编辑工具里选择一个工作表,再点击插入,然后点击“模块”。
3、在模块编辑栏里将代码粘贴进去,需要运行代码就按键盘的F5即可。
动图演示:
另外有几点需要强调下。
1、代码只能合并多张工作簿下的第一张工作表的文件,如果一张工作簿有多张工作表,则默认只会合并第一张工作表。
2、一次只能合并同一后缀名的文件,比如只能同时合并xls后缀或者xlsx后缀的文件,若同一文件夹下既有.xls文件又有.xlsx文件,则代码无法正常运行。因为xls文件和xlsx的工作表行数不一致。
喜欢的同学记得加个关注点个收藏