【发布时间】:2020-08-16 17:41:57
【问题描述】:
如何使用 Excel VBA 将特定工作表保存到新工作簿?
我有多个名为“Sheet1”、“Sheet2”、“Sheet3”等的工作表。
我想通过单击将所有内容保存在单独的工作簿中。
这是返回警报
方法另存为对象工作簿失败
Sub SaveSplitSheet()
Dim ws As Worksheet
Dim wb As Workbook
For Each ws In ThisWorkbook.Sheets
If ws.Name Like "Sheet" & "*" Then
Application.DisplayAlerts = False
ws.Copy
ActiveWorkbook.SaveAs "/Users/Tukiyem/Downloads", FileFormat:=56
ActiveWorkbook.Close SaveChanges:=True
Application.DisplayAlerts = True
End If
Next
End Sub
找到答案->下面的代码将包含名称“sheet....”的多个工作表保存为单独的工作簿。
Sub SaveAsInLoop()
Dim ws As Worksheet
For Each ws In ThisWorkbook.Sheets
If ws.Name Like "Sheet" & "*" Then
Application.DisplayAlerts = False
ws.Copy
ActiveWorkbook.SaveAs "/Users/Tukiyem/Downloads/" & ws.Name & ".xlsx", FileFormat:=51
ActiveWorkbook.Close SaveChanges:=True
Application.DisplayAlerts = True
End If
Next
End Sub
【问题讨论】:
-
这是 Excel 工作簿还是 Google 表格?
-
另外你想把你复制的工作表放在哪里?目前,您的代码会找到它、复制它并关闭工作簿。
-
嗨塞缪尔,它的优秀。我想放在这个位置 /Users/Tukiyem/Downloads 。上面的代码仍然返回错误。
-
我最后一条评论的意思是,您正在复制
Worksheet,但随后关闭并保存Workbook(这是您的工作表所在的位置)。通常,如果您要复制Worksheet,您可能希望将其放入同一Workbook的新Worksheet中,或者甚至放入全新的Workbook中。如果您只是想将工作簿保存在新位置,则可以使用ActiveWorkbook.SaveAs "/Users/Tukiyem/Downloads", FileFormat:=56行,但最好使用完整的文件路径并在末尾包含/。