如何将选定的工作表另存为新工作簿
Posted
技术标签:
【中文标题】如何将选定的工作表另存为新工作簿【英文标题】: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
【问题讨论】:
【参考方案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)
【讨论】:
重点是我不想命名这些工作表。将来要导出的工作表数量会增加,我想保持代码灵活,以复制工作表“宏”“仪表板”“数据”以外的所有内容以上是关于如何将选定的工作表另存为新工作簿的主要内容,如果未能解决你的问题,请参考以下文章
用于在另存为对话框中将工作表另存为预命名文件的 VBA 代码