我认为标题已经说明了这个问题的所有内容,但需要进一步阐述一下:
我有一个 .xlsx 文件,其中包含几十张工作表。我想将所有这些工作表输出为单独的 .xlsx 文件。不需要自动命名它们。excel 是否有将工作表导出到单独文件的功能?
答案1
这不是一个内置功能。
但是,如果您运行此代码,它应该可以完成这项工作。
Sub SaveSheets()
Dim strPath As String
Dim ws As Worksheet
Application.ScreenUpdating = False
strPath = ActiveWorkbook.Path & "\"
For Each ws In ThisWorkbook.Sheets
ws.Copy
'Use this line if you want to break any links:
BreakLinks Workbooks(Workbooks.Count)
Workbooks(Workbooks.Count).Close True, strPath & ws.Name & ".xlsx"
Next
Application.ScreenUpdating = True
End Sub
Sub BreakLinks(wb As Workbook)
Dim lnk As Variant
For Each lnk In wb.LinkSources(xlExcelLinks)
wb.BreakLink lnk, xlLinkTypeExcelLinks
Next
End Sub
要运行代码,请执行以下操作:
- 打开 VBA 编辑器 ( Alt+ F11)
- 在左上角的树中,右键单击您的工作簿并插入一个新模块
- 将上述代码复制到此模块中
- 关闭 VBA 编辑器
- 在 Excel 中按Alt+F8运行宏并选择
SaveSheets
答案2
右键单击 Excel 工作表的选项卡时,可以选择移动或复制...
在出现的对话框中,您可以选择目标工作簿。选择(新书)。
点击好的。您的工作表现在位于新文档中。
答案3
我试过Peter Albert 的解决方案但对我来说没用,所以我找到了一个解决方案这个帖子(“Excel – 将工作表另存为单独文件”)电脑极客日记。
效果很好。您应该重命名包含点的工作表,以获取具有.xls
扩展名的正确命名的文件。
Sub CreateNewWBS()
Dim wbThis As Workbook
Dim wbNew As Workbook
Dim ws As Worksheet
Dim strFilename As String
Set wbThis = ThisWorkbook
For Each ws In wbThis.Worksheets
strFilename = wbThis.Path & "/" & ws.Name
ws.Copy
Set wbNew = ActiveWorkbook
wbNew.SaveAs strFilename
wbNew.Close
Next ws
End Sub
使用 Peter Albert 的帖子或以下网址的说明创建并运行此宏如何在 MS Office 中添加 VBA?