
一、 背景
有些时候,在一个工作簿中有多个sheet,比如说这一个工作簿里是1到12月的销售表,现在需要把这12个sheet放到12个工作簿中,这个功能用VBA就可以很容易实现。
二、 思路
首先要遍历工作簿中所有sheet,并把sheet复制一下,另存为一个工作簿,这样就能满足我们的需求了。
原始数据如下(以3个月为例):

三、 操作
①我们对这段VBA代码设置了快捷键,ctrl+m,就可以执行代码。
快捷键设置方式:
如下图

四、 源代码及解析
源代码如下:
Option Explicit
Sub SplitWorkbookBySheetName()
'定义变量
Dim wb As Workbook
Dim ws As Worksheet
Dim strPath As String
'设置工作簿路径
strPath = ThisWorkbook.Path
'设置当前工作簿
Set wb = ThisWorkbook
'循环每个工作表
For Each ws In wb.Worksheets
'复制工作表
ws.Copy
'保存新工作簿
ActiveWorkbook.SaveAs strPath & "\" & ws.Name & ".xlsx"
'关闭新工作簿
ActiveWorkbook.Close
Next ws
End Sub
部分代码解析:
Option Explicit 语句在模块级别中使用,强制显式声明模块中的所有变量。
这个可以在VBE环境里设置,设置方式如下:

这一块是主要是核心代码,循环所有的sheet,复制sheet,并保存为新的工作簿,把新生成的工作簿关闭。
五、 执行效果
待处理数据:

执行结果:

总结:这样几行代码,就实现了把一个工作簿中的sheet拆分到新的工作簿中,如果是一年的数据,一分钟左右就能处理完成。如果对这个功能感兴趣的朋友,可以私信我,获取源文件。处理中可能存在一些不合理的地方,大家有好的建议也可以留言一块儿讨论一下。