Excel VBA 7.49将工作表批量生成独立工作薄,工作薄和工作表灵活转换
一起学习,一起进步~~
前景提要(文末提供源码下载)
在我们日常的Excel操作中,工作表和工作薄是同时存在的两个概念,有时候我们会需要将数据存储在一个工作薄下面的多个工作表内,有时候我们有需要将每个工作表内的数据独立生成一个工作薄,方便分发存储,什么?你现在还不太清楚什么工作薄和工作表的概念!我这里再来来讲述下,以免大家混淆
场景说明
好了,解释完了工作薄和工作表的关系之后,我们来进入今天的整体,如果将多个工作表生成独立的工作薄呢?这是一个。。很简单的问题,我们来看看案例
这是我们上节进行工作表的拆分的时候最终的结果,那我们现在就利用这个工作薄,升级下需求,我们现在需要将每一个工作表生成一个独立的工作薄,方便我们将每个班级的成绩分发给每个班主任,让各班班主任了解自己学生的成绩,那会选择怎么操作呢?
新建工作薄---复制其中一个工作表,然后保存--重命名,在执行下一个,依次循环。。。
虽然可行,但是很难,我们来看看vba的解法
代码区
Sub chai()
Dim sth As Worksheet, pathn$
With Application.FileDialog(msoFileDialogFolderPicker)
.Title = "请选择要保存独立工作薄的文件夹位置"
If .Show = -1 Then
pathn = .SelectedItems(1)
End If
End With
For Each sth In Worksheets
sth.Copy
ActiveWorkbook.SaveAs pathn & "\" & sth.Name
ActiveWorkbook.Close False
Next sth
End Sub
很简单的代码就实现来我们的效果,来验证下
先让我们选择我们要保存独立工作薄的位置,非常简单的窗体对话框,然后我们来看看结果
原始数据并没有被破坏,还是完好的存在
并且在相应的位置生成了我们想要的工作薄,怎么样是不是很强大
我们随机打开一个看看结果是否正确
完全一模一样,nice
代码分析
我们现在来看看代码
With Application.FileDialog(msoFileDialogFolderPicker)
.Title = "请选择要保存独立工作薄的文件夹位置"
If .Show = -1 Then
pathn = .SelectedItems(1)
End If
End With
这段代码对于大家来说应该是非常简单了,和我一路走过来的小伙伴们应该是非常熟悉这段代码了,这里是利用FileDialog方法来形成一个文件的对话窗体
让我们可以根据自己的需要灵活的选择文件夹,提高代码的通用性和灵活性,
然后来到了今天的重点了,那么如何将每个工作表生成一个新的工作薄呢?
sth.Copy
没错,你没看错,就是他,这不是工作表的复制嘛?对,如果你不指定位置的话,他就是会生成一个新的工作薄,来验证下
然后有了新的工作薄,我们就需要重命名并且保存工作薄了,这里又要如何操作呢?
ActiveWorkbook.SaveAs pathn & "\" & sth.Name
一句代码执行了两个动作,另存为+重命名
看看效果
然后我们关掉当前工作薄,继续执行下一个工作表的相同操作就可以了,可以说原来你要几分钟完成的动作,用这段代码,你只需要5秒钟就可以完成了
====================================