Как можно "разбить" файл Excel (.xlsx), содержащий несколько листов, на отдельный лист [n].xlsx?

Я думаю, что название говорит все это по этому вопросу, но для уточнения немного дальше:

У меня есть файл.xlsx, который содержит несколько десятков листов. Я хочу вывести все эти листы в виде отдельных файлов.xlsx. Автоматическое присвоение им имен не требуется. Есть ли в Excel функция экспорта листов в отдельный файл?

3 ответа

Решение

Это не встроенная функция.

Однако, если вы запустите этот код, он должен сделать эту работу.

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

или посмотреть Как мне добавить VBA в MS Office?

  1. Щелкнув правой кнопкой мыши вкладку листа Excel, вы можете выбрать " Переместить" или "Копировать"...

    введите описание здесь

  2. В появившемся диалоговом окне вы можете выбрать целевую рабочую книгу. Выберите (новая книга).

    введите описание здесь

  3. Нажмите ОК. Ваш лист теперь внутри нового документа.

Я попробовал решение Питера Альберта, и оно не сработало для меня, поэтому я нашел решение в этом посте ("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

Используйте инструкции для создания и запуска этого макроса из публикации Питера Альберта или из Как добавить VBA в MS Office?

Другие вопросы по тегам