16

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

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

3 ответа3

16

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

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

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?

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

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

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

6

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .