Як можна "розділити" файл Excel (.xlsx), який містить кілька аркушів, на окремий аркуш [n] .xlsx?


17

Я думаю, що в заголовку сказано все, що стосується цього питання, але трохи докладніше:

У мене є .xlsx файл, який містить кілька десятків аркушів. Я хочу вивести всі ці аркуші як окремі .xlsx файли. Автоматичне називання їх не потрібно. Чи має excel функція експорту листів в окремий файл?

Відповіді:


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

Щоб запустити код, виконайте наступне:

  1. Відкрити редактор VBA ( Alt+ F11)
  2. У дереві у верхньому лівому куті правою кнопкою миші клацніть на робочій книжці та вставте новий модуль
  3. Скопіюйте вищевказаний код у цей модуль
  4. Закрийте редактор VBA
  5. У Excel натисніть Alt+, F8щоб запустити макроси та виберітьSaveSheets

або див. Як додати VBA у MS Office?


Спасибі! А що з реверсом? - щоб повернути його разом? Цей файл excel, мабуть, містив "посилання" (я не використовував цю функцію раніше), і після розщеплення Excel не може знайти посилання (він шукає перший аркуш); чи є можливість поділити їх і одночасно оновити посилання / або просто оновити посилання?
eichoa3I

1
питання в тому, як ви хочете обробляти посилання. Ви можете легко замінити їх значеннями, вставивши Workbooks(Workbooks.Count).BreakLinksпісля ws.Copy...
Пітер Альберт

Після того, як я відкрив одну робочу книжку, спливаюче вікно в Excel запропонувало мені виправити посилання; Я натиснув це діалогове вікно і тепер посилання працюють для всіх файлів. Мені цікаво, хоча це було збережено у файлі чи локально ...
eichoa3I

Коли ви говорите, замініть їх значеннями на Workbooks (Workbooks.Coun) .BreakLinks, ви маєте на увазі, що посилання видалено або ...? Я думаю, що найкращий спосіб впоратися з ними - це просто усунути їх (тобто, коли користувачі відкривають відокремлені файли Excel, вони не бачать попередження про пошкоджені посилання).
eichoa3I

Вибачте, спробуйте Workbooks(Workbooks.Count).BreakLink- без sкінця
Пітер Альберт

11
  1. Клацнувши правою кнопкою миші на вкладці аркуша Excel, ви можете вибрати Перемістити або Скопіювати ...

    введіть тут опис зображення

  2. У діалоговому вікні, що виходить, можна вибрати цільову робочу книжку. Виберіть (нова книга) .

    введіть тут опис зображення

  3. Натисніть кнопку ОК . Ваш аркуш знаходиться всередині нового документа.


8

Я спробував рішення Пітера Альберта, і це не спрацювало для мене, тому я знайшов рішення в цій публікації ("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?


1
Я також спробував рішення Пітера Альберта, і сталася помилка "Помилка під час запуску'13": Невідповідність типу. На щастя, рішення у цій відповіді працює для мене.
Бін

як я можу змусити його перезаписати наявні файли з тим самим іменем?
ДЕНЬ

Мені це не потрібно було, тому що кожен дамп переходить в окрему папку. Можливо, спробуйте цю тему
hrvoj3e

Ваше рішення спрацювало на мене :)
Мухаммед Вахід
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.