乐于分享
好东西不私藏

【简单】多个excel表合并,你还在一个个复制吗?只需一秒合并到对应的sheet表中

【简单】多个excel表合并,你还在一个个复制吗?只需一秒合并到对应的sheet表中
在工作中,你有没有遇到过这种情况:
从系统里导出数据时,导出多个文件,需要合并到一个excel文件中不同的工作表(sheet)中。文件多的话,手动复制又累又慢,还容易出错。
(备注:如果需要合并到同一个工作表中,请参考【简单】多个excel表合并,你还在一个个复制吗?只需一秒合并多个excel表)
其实只用简单的几步,快速合并表格,大大节省你的时间——直接上干货,保你学会。
第1步:新建一个文件夹,随便命名,把要合并的文件都进去。多少个表格都没问题;
第2步:在其他任何地方新建一个excel表,打开后,按alt+F11后,打开VBA界面,选择sheet1——右键——插入——模块
第3步:将下面代码复制到模块中;直接复制粘贴即可;
(为防止复制代码格式出错,可关注公众号,后台回复“文件合并到不同工作表”,下载完整的txt代码文件
Sub MergeExcelFilesToSheets()    Dim fldPath As String    Dim fileName As String    Dim srcWB As Workbook    Dim destWB As Workbook    Dim destSheet As Worksheet    Dim sheetName As String    Dim i As Long    ' 设置目标工作簿为当前活动工作簿(也可改为新建工作簿,见注释)    Set destWB = ThisWorkbook    ' 选择文件夹    With Application.FileDialog(msoFileDialogFolderPicker)        .Title = "请选择包含Excel文件的文件夹"        .AllowMultiSelect = False        If .Show <> -1 Then Exit Sub   ' 用户取消        fldPath = .SelectedItems(1) & "\"    End With    ' 关闭屏幕刷新和警告,提速并防止提示    Application.ScreenUpdating = False    Application.DisplayAlerts = False    ' 遍历文件夹中所有Excel文件(可根据需要修改扩展名)    fileName = Dir(fldPath & "*.xls*")    i = 0    Do While fileName <> ""        ' 打开源工作簿(只读方式)        Set srcWB = Workbooks.Open(fldPath & fileName, ReadOnly:=True)        ' 复制源文件的第一个工作表到目标工作簿的最后        srcWB.Sheets(1).Copy After:=destWB.Sheets(destWB.Sheets.Count)        Set destSheet = destWB.Sheets(destWB.Sheets.Count)        ' 生成工作表名称:去掉扩展名        sheetName = Left(fileName, InStrRev(fileName, ".") - 1)        ' 若名称长度超过31字符则截断(Excel工作表名限制)        If Len(sheetName) > 31 Then sheetName = Left(sheetName, 31)        ' 若重名则添加数字后缀        If SheetExists(sheetName, destWB) Then            Dim suffix As Integer            suffix = 1            Do While SheetExists(sheetName & "_" & suffix, destWB)                suffix = suffix + 1            Loop            sheetName = sheetName & "_" & suffix        End If        destSheet.Name = sheetName        ' 关闭源工作簿,不保存        srcWB.Close SaveChanges:=False        i = i + 1        fileName = Dir()   ' 下一个文件    Loop    ' 恢复设置    Application.ScreenUpdating = True    Application.DisplayAlerts = True    MsgBox "合并完成!共合并了 " & i & " 个文件。", vbInformationEnd Sub' 辅助函数:检查指定工作簿中是否存在某工作表Private Function SheetExists(sheetName As String, wb As Workbook) As Boolean    On Error Resume Next    SheetExists = Not (wb.Sheets(sheetName) Is Nothing)    On Error GoTo 0End Function
第5步:按F5,直接运行即可,首先会弹出,让你选择合并文件的位置,你把刚建的文件夹选上就可以,确定后,等一会,就提示“合并完成!”了。
是不是很简单!
欢迎留言,告诉我你在办公中遇到的问题!帮你出谋划策!

阅读延伸

【excel】多条件求和,只需要一个SUMIFS全搞定

【Excel】统计不重复客户数量,不用新函数!2个通用方法,简单又快捷

【excel】VLOOKUP模糊匹配数值,你会吗?

【简单】一个excel中有多个工作表需要合并,你还在一个个复制吗?只需一秒快速搞定

【简单】多个excel表合并,你还在一个个复制吗?只需一秒合并多个excel表

【简单】excel表快速拆分成独立文件,只需一步

【简单】避免数据录错,excel制作下拉菜单,只需简单一步