如何将包含多个工作表的 Excel (.xlsx) 文件“拆分”为单独的 Sheet[n].xlsx?

如何将包含多个工作表的 Excel (.xlsx) 文件“拆分”为单独的 Sheet[n].xlsx?

我认为标题已经说明了这个问题的所有内容,但需要进一步阐述一下:

我有一个 .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

要运行代码,请执行以下操作:

  1. 打开 VBA 编辑器 ( Alt+ F11)
  2. 在左上角的树中,右键单击您的工作簿并插入一个新模块
  3. 将上述代码复制到此模块中
  4. 关闭 VBA 编辑器
  5. 在 Excel 中按Alt+F8运行宏并选择SaveSheets

或查看如何在 MS Office 中添加 VBA?

答案2

  1. 右键单击 Excel 工作表的选项卡时,可以选择移动或复制...

    在此处输入图片描述

  2. 在出现的对话框中,您可以选择目标工作簿。选择(新书)

    在此处输入图片描述

  3. 点击好的。您的工作表现在位于新文档中。

答案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?

相关内容