如何快速将工作表批量转换成工作簿?
接上一篇文章 『 一个工作簿中到底可以建多少个Sheet?』,我们用数据透视表中的报表筛选器可以快速批量新建工作表,这次介绍把工作表快速转换成工作簿的方法。
工作簿本质是一个文件,如果要把工作表变成工作簿其实就是要生成出新的Excel文件出来,Office中并没有生成文件的函数公式,也没有可以实现该需求的配套功能。但是,这都不是问题,因为Office支持"宏",【也叫VBA】,它可以帮助我们完成用函数公式实现不了的任务,因为它能很好的支持办公自动化,让用户能自行对功能进行的灵活、便捷的扩展以及个性化定制,这也是Office能被全世界用户这么认可的原因之一。
一、操作步骤
1.打开需要转换的工作簿。
2.右键点击其中一个sheet查看代码 或 按快捷键ALT+F11进入VBE界面。
3.找到左边的工程窗口,然后鼠标右键,新建一个模块。
4.把工作簿拆分工作表代码贴入到模块中。
5.按F5或点击工具栏里面的类似播放按钮,运行代码。
6.完成拆分。
二、演示效果
640.gif
三、VBA代码
Sub WorkbookToSheet()
Application.DisplayAlerts = False
Application.ScreenUpdating = False
For i = 1 To ThisWorkbook.Sheets.Count
ThisWorkbook.Sheets(i).Copy
ActiveWorkbook.SaveAs ThisWorkbook.Path & "/" & ThisWorkbook.Sheets(i).Name, xlWorkbookDefault
ActiveWorkbook.Close True
Next
Application.ScreenUpdating = True
Application.DisplayAlerts = True
MsgBox "处理完成。", , "提醒"
End Sub
四、代码解释与说明
Sub WorkbookToSheet()
'关闭系统警告和消息提示,相同工作簿存在时会直接覆盖保存。
Application.DisplayAlerts = False
'关闭屏幕刷新,防止出现闪动
Application.ScreenUpdating = False
'遍历当前工作簿中的 第一个sheet 到 最后一个sheet 【ThisWorkbook.Sheets.Count=当前工作簿中的工作表的个数】
For i = 1 To ThisWorkbook.Sheets.Count
'复制当前工作簿中的第i个工作表
ThisWorkbook.Sheets(i).Copy
'工作表复制后,会成为活动工作薄,把活动的工作簿另存到当前工作簿的相同路径下,新的工作簿名字用被复制的工作表的名字,并采用默认Excel文件格式
ActiveWorkbook.SaveAs ThisWorkbook.Path & "/" & ThisWorkbook.Sheets(i).Name, xlWorkbookDefault
'关闭工作薄并保存
ActiveWorkbook.Close True
Next
'前面强制关闭了屏幕刷新,程序结束前要恢复,否则会影响到平时的正常使用。
Application.ScreenUpdating = True
'前面强制关闭了警告和消息提示,程序结束前要恢复,否则会影响到平时的正常使用。
Application.DisplayAlerts = True
'提示已经处理完成。
MsgBox "处理完成。", , "提醒"
End Sub
关注公众号,回复"拆分",免费获取拆分工具
qrcode_for_gh_fae2b8b8c191_258.jpg