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 IfEnd WithFor Each sth In Worksheets sth.Copy ActiveWorkbook.SaveAs pathn & "\" & sth.Name ActiveWorkbook.Close FalseNext sthEnd Sub

很简单的代码就实现来我们的效果,来验证下

先让我们选择我们要保存独立工作薄的位置,非常简单的窗体对话框,然后我们来看看结果

原始数据并没有被破坏,还是完好的存在

并且在相应的位置生成了我们想要的工作薄,怎么样是不是很强大

我们随机打开一个看看结果是否正确

完全一模一样,nice

代码分析

我们现在来看看代码

With Application.FileDialog(msoFileDialogFolderPicker) .Title = "请选择要保存独立工作薄的文件夹位置" If .Show = -1 Then pathn = .SelectedItems(1) End IfEnd With

这段代码对于大家来说应该是非常简单了,和我一路走过来的小伙伴们应该是非常熟悉这段代码了,这里是利用FileDialog方法来形成一个文件的对话窗体

让我们可以根据自己的需要灵活的选择文件夹,提高代码的通用性和灵活性,

然后来到了今天的重点了,那么如何将每个工作表生成一个新的工作薄呢?

sth.Copy

没错,你没看错,就是他,这不是工作表的复制嘛?对,如果你不指定位置的话,他就是会生成一个新的工作薄,来验证下

然后有了新的工作薄,我们就需要重命名并且保存工作薄了,这里又要如何操作呢?

ActiveWorkbook.SaveAs pathn & "\" & sth.Name

一句代码执行了两个动作,另存为+重命名

看看效果

然后我们关掉当前工作薄,继续执行下一个工作表的相同操作就可以了,可以说原来你要几分钟完成的动作,用这段代码,你只需要5秒钟就可以完成了

====================================

(0)

相关推荐