Как можно "разбить" файл 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
Чтобы запустить код, сделайте следующее:
- Откройте редактор VBA (Alt+F11)
- В дереве в верхнем левом углу щелкните правой кнопкой мыши на своей книге и вставьте новый модуль.
- Скопируйте приведенный выше код в этот модуль
- Закройте редактор VBA
- В Excel нажмите Alt+F8 для запуска макросов и выберите
SaveSheets
или посмотреть Как мне добавить VBA в MS Office?
Щелкнув правой кнопкой мыши вкладку листа Excel, вы можете выбрать " Переместить" или "Копировать"...
В появившемся диалоговом окне вы можете выбрать целевую рабочую книгу. Выберите (новая книга).
Нажмите ОК. Ваш лист теперь внутри нового документа.
Я попробовал решение Питера Альберта, и оно не сработало для меня, поэтому я нашел решение в этом посте ("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?