有时,我们需要将一个工作薄里的每张工作表,另存为单独的工作薄;如果只是一两张工作表需要这样处理,我们手工操作就挺好的,可如果是若干张,手工操作即烦又慢。
如果使用VBA来处理,这事就简单了。怎么个简单法呢?,请看动画视频:
动画中所使用的VBA代码如下:
Sub newbooks()
Dim sht As Worksheet, mypath$
Application.DisplayAlerts = False
'取消显示系统警告和消息
Application.ScreenUpdating = False
'取消屏幕刷新
With Application.FileDialog(msoFileDialogFolderPicker)
'选择保存工作薄的文件路径
.AllowMultiSelect = False
'不允许多选
If .Show Then
mypath = .SelectedItems(1)
'读取选择的文件路径
Else
Exit Sub
'如果没有选择保存路径,则退出程序
End If
End With
If Right(mypath, 1) <> '\' Then mypath = mypath & '\'
For Each sht In Worksheets
'遍历工作表
sht.Copy
'复制工作表,工作表单纯复制后,成为活动工作薄
With ActiveWorkbook
.SaveAs mypath & sht.Name, xlWorkbookDefault
'保存活动工作薄到指定路径下
.Close True '关闭工作薄
End With
Next
MsgBox '处理完成。', , '提醒'
Application.ScreenUpdating = True '恢复屏幕刷新
Application.DisplayAlerts = True '恢复显示系统警告和消息
End Sub
代码中,注释部分,对每句代码的作用都做了说明,此处我们就不再啰嗦了。
新人朋友可以会对VBA代码有抵触心理,觉得那么高大上的东西,自己玩的转吗?大可不必有这样的疑虑,函数其实也是一种代码,所谓函数,只是微软把一些常用功能用编程模块化后的结果,所以——如果能用好函数,自然也能用好VBA代码。
如果并不打算深入学习VBA,只是临时使用下,那只要会复制黏贴就好了!
参见VBA小代码使用步骤说明:
能看到结束,想必对于VBA也是很感兴趣的吧?我们下期分享如何按照指定字段,将数据表快速拆分为单独的工作表。什么意思呢,比如,一张表格有不同班级的人员,现在需要把他们按照班级,快速拆分为各个的工作表~~
照例贴送示例文件百度网盘:百度网盘 (网盘里还有很多惊喜~~)
更多实用VBA小代码,请持续关注:@EXCELers
握手,晚安,明见。
联系客服