尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

VBA一键合并Excel工作薄:两段代码搞定“合并(附完整源码和学习素材包)

VBA一键合并Excel工作薄:两段代码搞定“合并(附完整源码和学习素材包) 一、背景这事有多烦上周财务小王找我说月底要汇总12家分公司的业绩表每家发来一个Excel文件要求合并成一个工作薄方便后续筛选分析。她原本的做法是打开第一个文件 → 复制 → 切换到汇总表 → 粘贴 → 再打开第二个……12个文件搞完一下午没了还容易粘错行。我跟她说你装个VBA宏3秒钟搞定。今天老刘就把这套代码教给你有手就行简单适用代码直接复制可用适配 .xls 和 .xlsx二、准备工作把所有需要合并的Excel文件放在同一个文件夹里在这个文件夹下新建一个Excel文件作为汇总表打开这个汇总表按 Alt F11 打开VBA编辑器菜单栏点击【插入】→【模块】把代码粘贴进去按 F5 运行或回到Excel按 Alt F8 选择宏名运行⚠️ 前提条件所有待合并的文件结构要一致列名、列顺序相同且首行不能有合并单元格否则数据会对不齐。三、核心代码代码一把多个工作薄合并成一个工作薄每个文件占一个Sheet适合场景你想保留每个分公司的原始数据结构方便后续分别查看。VBA 在这里插入代码片 Sub 合并工作薄()Dim FileOpen Dim i As Integer Application.ScreenUpdatingFalse关闭屏幕刷新加快运行速度 弹出文件选择对话框可多选 FileOpenApplication.GetOpenFilename(_ FileFilter:Microsoft Excel文件(*.xlsx),*.xlsx, _ MultiSelect:True, _ Title:请选择要合并的工作薄)i1Do While iUBound(FileOpen)Workbooks.Open Filename:FileOpen(i)把打开的工作薄中所有工作表移动到当前工作薄末尾 Sheets().Move After:ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)ii 1Loop Application.ScreenUpdatingTrue MsgBox已完成合并, vbInformation,提示End Sub实操开始1.先用准备好的素材表再新建一个名为“代码一把多个工作薄合并成一个工作薄每个文件占一个Sheet”2、打开“代码一把多个工作薄合并成一个工作薄每个文件占一个Sheet”按 Alt F11 打开VBA编辑器并插入“模块”3.选择要合并的工作薄点击打开即可。4.合并完成效果展示代码二把多个工作薄合并成一个总表纵向拼接适合场景你想把所有分公司的数据纵向堆叠到同一个Sheet里方便做筛选、透视表。Sub 合并当前目录下所有工作簿() Dim Wb As Workbook Application.ScreenUpdating False MyPath ActiveWorkbook.Path MyName Dir(MyPath \ *.xlsx) AWbName ActiveWorkbook.Name Do While MyName If MyName AWbName Then Set Wb Workbooks.Open(MyPath \ MyName) c ThisWorkbook.Sheets(Sheet1).UsedRange.SpecialCells(xlCellTypeLastCell).Row If c 1 Then c 0 防止合并的工作簿第一行空着 复制数据到汇总表跳过标题行 ActiveSheet.UsedRange.Copy ThisWorkbook.Sheets(Sheet1).Cells(c 1, 1) Wb.Close False End If MyName Dir Loop Application.ScreenUpdating True MsgBox 已完成, vbInformation, 提示 End Sub实操开始1.先用准备好的素材表再新建一个名为“代码二把多个工作薄合并成一个总表纵向拼接”2.打开“代码二把多个工作薄合并成一个总表纵向拼接”按 Alt F11 打开VBA编辑器并插入“模块”3.点击运行F5运行即可。4.合并完成效果展示五、常见问题六、老刘踩坑提醒 这三个坑是我当年踩过的你别再踩文件路径不能有中文特殊字符虽然新版Office支持但为了兼容性建议路径纯英文运行前关闭所有源文件否则VBA打开文件时会卡住数据量超过10万行慎用VBA逐行复制会慢建议改用Power Query七、进阶玩法掌握了合并下一步自然是拆分——把一个总表按某一列比如分公司拆分成多个工作薄。下一篇老刘就教你用VBA反向操作把一个工作薄拆成N个文件每个分公司一个。 如果这篇帮你省了时间点个赞告诉我 关注办公自动化老刘每周2-3篇实战干货 有任何问题评论区见老刘看到必回下期预告《VBA拆分工作薄按列一键拆成N个文件HR和财务必看》学习素材包第1篇 VBA一键合并Excel工作薄附完整源码及学习素材包链接: https://pan.baidu.com/s/1kGFBu9ZqHKP1TLL15Z7dGg?pwdesw3 提取码: esw3
返回列表