【问题标题】:Save multiple sheets that contain name "sheet...." as individual workbooks将包含名称“sheet....”的多个工作表保存为单独的工作簿
【发布时间】: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 行,但最好使用完整的文件路径并在末尾包含 /

标签: excel vba


【解决方案1】:

我会将您的代码稍微调整为For...Next 循环而不是For Each...Next,这将允许评估我们在循环中要处理的数字表。

此代码是如何循环工作表的示例。它会将每个工作表名称打印到 VBE 的立即窗口。

只需在循环中调整您的 SaveAs 代码即可。

Sub SaveAsInLoop()
Dim SheetNumber As Long

For SheetNumber = 1 To ThisWorkbook.Sheets.Count
    Debug.Print Sheets("Sheet" & SheetNumber).Name
Next SheetNumber

End Sub

【讨论】:

  • Sub SaveAsInLoop() 为 ThisWorkbook.Sheets 中的每个 ws 暗淡 ws 作为工作表 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
  • 嗨塞缪尔,我找到了。上面的代码运行良好。我在循环中添加了 ws.name,因此它将保存每个工作表名称。
  • 仅供参考 "Sheet" & "*""Sheet*" 相同
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-27
  • 1970-01-01
相关资源
最近更新 更多