1.需求场景
工作中常常遇到需要把保存在一个Excel文件中的若干个工作表分别保存为单独文件。例如:把一年中各个月份的绩效考核分别输出;把部门每个人的简历分别输出;把全校所有学生的成绩单分别输出……
2.解决思路
按照手工操作的过程思考,设置一个循环分别激活各个工作表,对每个工作表执行复制到新文件和保存、关闭文件的操作。
3.VBA实现
'定义工作簿(文件)变量
Dim wb As Workbook
'定义工作表变量
Dim ws As Worksheet
'定义循环变量
Dim i As Integer
'定义文件路径、文件名变量
Dim fPath, fName As String
Sub 一键输出多表格为单独文件()
'设置工作簿为当前文件
Set wb = Workbooks(1)
'获取文件存储路径
fPath = ThisWorkbook.path
'关闭屏幕刷新
Application.ScreenUpdating = False
'设置要输出的工作表索引号范围,循环处理
For i = 2 To 13
'设置活动工作表
Set ws = Worksheets(i)
'激活工作表
ws.Activate
'复制激活的工作表
ws.Copy
'获取表名赋值为文件名
fName = ws.Name & ".xlsx"
'复制的工作表成为新文件,在当前目录下保存为单独文件
ActiveWorkbook.SaveAs fileName:=fPath & "\" & fName
'关闭已保存的文件
ActiveWorkbook.Close
'释放工作表变量
Set ws = Nothing
Next i
'释放工作簿变量
Set wb = Nothing
'开启屏幕刷新
Application.ScreenUpdating = True
'显示提示信息
MsgBox "工作表输出文件完成。"
End Sub
4.运行效果
每个工作表均以表名为文件名,单独存储为独立的excel文件。
每个文件中仅有一个工作表