【问题标题】:How to save selected worksheets as a new workbook如何将选定的工作表另存为新工作簿
【发布时间】:2020-02-10 09:54:12
【问题描述】:

您好,我正在尝试编写一个宏来将某些工作表选择到一个新文件中。

棘手的部分是我想保存除 3 之外的所有工作表。

我已设法选择工作表,但找不到如何创建新工作簿然后保存它。

这是我的代码,子停在Sheets(Array(Selection)).Copy

这不是正确的命令。

感谢您的帮助

Sub ExportPrices()

Dim ExportName As String
Dim ReportingDir As String
Dim Dashboard As String
Dim ws As Worksheet

Dashboard = ThisWorkbook.Name
ExportName = Workbooks(Dashboard).Worksheets("Macro").Range("ExportName").Value
ReportingDir = Workbooks(Dashboard).Worksheets("Macro").Range("ReportingDir").Value


Workbooks(Dashboard).Worksheets("Europe").Select

For Each ws In Worksheets
    If ws.Name <> "Macro" And ws.Name <> "Dashboard" And ws.Name <> "Data" Then
ws.Select (False)
    End If
Next

'create an array from selection

Sheets(Array(Selection)).Copy

    ActiveWorkbook.SaveAs Filename:=ReportingDir & ExportName, _
        FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False

End Sub

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    您必须添加新工作簿并将目标表复制到 wb:

     Dim oOutBook As Workbook
     Set oOutBook = Workbooks.Add
     Sheets(Array(Selection)).Copy Before:=oOutBook.Sheets(1)
     oOutBook.SaveAs strPathOutput
    

    【讨论】:

    • 当发生这种情况时,我仍然在 Sheets(Array(Selection)).Copy 行上收到运行时错误“9”,我想复制到新文件的所有工作表都被选中,但我不知道如何使用代码参考此选择。有什么想法吗?
    【解决方案2】:

    您可以在 VBA 中使用.Move method。当没有显示要移动到的位置时,.Move 方法会将指定的工作表移动到新工作簿中。

    Sheets("Yoursheet").Move
    

    由于这将始终是最新创建的工作簿,因此您可以使用 Workbooks.Count 参考:

    Dim wb As Workbook
    Set wb = Workbooks(Workbooks.Count)
    

    【讨论】:

    • 重点是我不想命名这些工作表。将来要导出的工作表数量会增加,我想保持代码灵活,以复制工作表“宏”“仪表板”“数据”以外的所有内容
    猜你喜欢
    • 1970-01-01
    • 2017-03-10
    • 2018-01-02
    • 2012-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多