有时候我们拿到一个excel工作簿,希望将其中所有工作表独立另存为一个个独立的excel工作簿。
如果用手工操作,可以用鼠标右键单击工作表名称标签,在弹出的快捷菜单中选择“移动或者复制”命令,在弹出的“移动或者复制工作表”对话框中可以选择将工作表移动到当前工作簿中的任意一个工作表的位置之前或之后,也可以将工作表移动到一个新的空白工作簿。
在vba中,Worksheet对象的Copy方法可以实现以上的功能。
它的语法如下:
expression . Copy( Before , After )
其中 Before 和After参数表示要插在哪个工作表之前或者之后,如果都不提供的话,则表示移动到一个空白的新的工作簿。
基于上述的知识,可以应用下面的vba代码批量将所有excel工作簿中的所有工作表批量另存为独立的excel工作簿:
Sub 工作表批量另存为独立的工作簿() 'QQ:1722187970,微信:xycgenius,公众号:水星excel Dim oWK As Worksheet Dim oWB As Workbook Dim sPath As String Dim sName As String If MsgBox("现在开始将把各工作表独立另存为工作簿文件,请再次检查格式数据是否正确?", vbYesNo, "重要提示") = vbYes Then '要保存的路径 sPath = Excel.ThisWorkbook.Path '避免保存过程中弹出对话框干扰、公式计算干扰等 Excel.Application.ScreenUpdating = False Excel.Application.Calculation = xlCalculationManual Excel.Application.DisplayAlerts = False For Each oWK In Excel.ThisWorkbook.Worksheets With oWK '将工作表名称作为工作簿的名称保存 sName = .Name .Copy Set oWB = Excel.Application.ActiveWorkbook oWB.SaveAs sPath & "\" & .Name, xlOpenXMLWorkbook oWB.Close End With Next Excel.Application.ScreenUpdating = True Excel.Application.Calculation = xlCalculationAutomatic Excel.Application.DisplayAlerts = True MsgBox "操作结束" End If End Sub
发表评论