日常办公经常遇到一个工作簿里有十多个工作表,需要单独导出每一个工作表为独立 Excel 文件,手动另存为费时又容易出错。
今天分享一段极简实用 VBA 代码,一键批量拆分所有工作表,自动以工作表名称命名保存,零基础直接复制就能用。

一、完整 VBA 源码
Sub FILE()Dim I AsIntegerDim Name AsString'遍历当前工作簿所有工作表For I =1To Worksheets.Count'选中对应工作表 Sheets(I).Select'获取工作表名称 Name = Sheets(I).Name'单独复制该工作表,生成新工作簿 Sheets(I).Copy'保存到原文件同级目录,命名为:工作表名.xlsx ActiveWorkbook.SaveAs Filename:=ThisWorkbook.Path &"\"& Name &".xlsx",_ FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False'关闭拆分出来的新文件 ActiveWindow.CloseNext MsgBox "所有工作表拆分完成!", vbInformationEnd Sub
二、代码核心逻辑解析
循环遍历
For I = 1 To Worksheets.Count自动识别当前文件全部工作表,无需手动修改数量,适配任意表格数量。自动命名抓取每个工作表自带名称,导出文件直接命名为「工作表名.xlsx」,不重名、好区分。
自动保存路径
ThisWorkbook.Path自动读取原文件所在文件夹,拆分后的文件和原表格保存在同一个目录,不用手动选保存位置。格式规范指定保存格式为
xlOpenXMLWorkbook,标准 xlsx 格式,兼容所有新版 Office/WPS。
三、详细操作步骤(零基础照着做)
打开需要拆分的 Excel 表格,按快捷键 Alt + F11打开 VBA 编辑器;右键左侧当前工作簿名称 → 插入 → 模块; 将上方完整代码复制粘贴到右侧空白编辑区; 按下 F5直接运行,或点击运行按钮;运行结束弹出完成提示,前往原表格文件夹,即可看到所有单独拆分的文件。
四、使用注意事项
- 文件先保存
运行代码前,务必将原 Excel 文件提前保存,否则无法识别保存路径,会报错。 - 关闭弹窗干扰
如果运行时出现格式提示弹窗,可在代码开头添加一句静默代码屏蔽提示:
Application.DisplayAlerts =False
运行结束再恢复:
Application.DisplayAlerts =True
- 兼容版本
完美适配 Office 2016/2019/365、WPS 最新版,低版本 Excel 无需修改代码直接使用。
五、优化升级版(无弹窗 + 更稳定)
给大家补充优化版代码,杜绝保存弹窗、报错卡顿,日常长期使用更稳定:
Sub 批量拆分工作表为单独文件()Dim I AsIntegerDim shtName AsString'关闭弹窗提示、禁止屏幕闪烁 Application.DisplayAlerts =False Application.ScreenUpdating =FalseFor I =1 To Worksheets.Count shtName = Sheets(I).Name Sheets(I).Copy ActiveWorkbook.SaveAs ThisWorkbook.Path &"\"& shtName &".xlsx",_ FileFormat:=xlOpenXMLWorkbook ActiveWindow.CloseNext'恢复程序默认设置 Application.DisplayAlerts =True Application.ScreenUpdating =True MsgBox "拆分完成!文件已保存在原表格同目录", vbOKOnlyEnd Sub
六、场景适用
财务报表分部门拆分存档 项目台账按分项单独导出 多 sheet 汇总表拆分分发 行政、人事、仓储高频表格拆分场景
夜雨聆风