摘要:在 VBA(Visual Basic for Applications)中,你可以编写一个宏来将 Excel 工作簿中的每一个工作表拆分到单独的新工作簿中。以下是一个示例代码,可以帮助你实现这个功能:
在 VBA(Visual Basic for Applications)中,你可以编写一个宏来将 Excel 工作簿中的每一个工作表拆分到单独的新工作簿中。以下是一个示例代码,可以帮助你实现这个功能:
复制以下代码:
Sub SplitSheetsToWorkbooks
Dim ws As Worksheet
Dim newWorkbook As Workbook
Dim FilePath As String
Dim folderPath As String
' 设置保存新工作簿的文件夹路径
folderPath = ThisWorkbook.Path & "\SplitWorkbooks\"
' 检查并创建文件夹(如果不存在)
If Dir(folderPath, vbDirectory) = "" Then
MkDir folderPath
End If
' 遍历每一个工作表
For Each ws In ThisWorkbook.Worksheets
' 创建一个新的工作簿
Set newWorkbook = Workbooks.Add
' 复制工作表到新工作簿
ws.Copy Before:=newWorkbook.Sheets(1)
' 删除新工作簿中的默认工作表
Application.DisplayAlerts = False
newWorkbook.Sheets(2).Delete
Application.DisplayAlerts = True
' 设置新工作簿的文件路径
filePath = folderPath & ws.Name & ".xlsx"
' 保存新工作簿
newWorkbook.SaveAs Filename:=filePath, FileFormat:=xlOpenXMLWorkbook
newWorkbook.Close SaveChanges:=False
Next ws
MsgBox "工作表已成功拆分到单独的工作簿中!", vbInformation
End Sub
代码解释
设置文件夹路径:
folderPath 变量存储保存新工作簿的文件夹路径。默认设置为当前工作簿所在路径下的一个名为 "SplitWorkbooks" 的文件夹。
使用 MkDir 函数创建文件夹(如果文件夹不存在)。
遍历工作表:
使用 For Each 循环遍历当前工作簿中的每一个工作表。
创建新工作簿并复制工作表:
创建一个新的工作簿。
将当前工作表复制到新工作簿的第一个位置。
删除新工作簿中的默认创建的空工作表(Sheet2 和 Sheet3)。
保存新工作簿:
设置新工作簿的文件路径,文件名使用工作表的名称。
使用 SaveAs 方法保存新工作簿为 .xlsx 格式。
关闭新工作簿,不保存更改(因为已经保存过了)。
提示信息:
弹出消息框,提示用户工作表已成功拆分到单独的工作簿中。
使用方法
打开 Excel 工作簿,按 Alt + F11 打开 VBA 编辑器。
在 VBA 编辑器中,插入一个新模块(点击 Insert -> Module)。
将上述代码粘贴到新模块中。
关闭 VBA 编辑器,返回 Excel。
这样,你的每一个工作表都会被拆分并保存到单独的新工作簿中,存储在你指定的文件夹中。
来源:黄河影音