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

eic*_*a3I 18 microsoft-excel xlsx

我认为标题说明了这个问题的全部内容,但要进一步详细说明:

我有一个包含几十张纸的 .xlsx 文件。我想将所有这些工作表作为单独的 .xlsx 文件输出。不需要自动命名它们。excel 有将工作表导出到单独文件的功能吗?

Pet*_*ert 17

它不是内置功能。

但是,如果您运行此代码,它应该可以完成工作。

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
Run Code Online (Sandbox Code Playgroud)

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

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

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


Der*_*ler 12

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

    在此处输入图片说明

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

    在此处输入图片说明

  3. 单击“确定”。您的工作表现在位于新文档中。


小智 10

我尝试了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
Run Code Online (Sandbox Code Playgroud)

使用来自 Peter Albert 的帖子或如何在 MS Office 中添加 VBA 的说明创建和运行此宏