Як відокремити листи Excel у різні файли

Це трапляється досить часто: складаєш річний звіт, і в ньому міститься 12 місяців, отже, 12 аркушів. Необхідно розділити цей документ так, щоб кожен аркуш перетворився на окремий файл.

Звичайно, це можна виконати власноруч, проте цей процес займає багато часу і не є ефективним.

Я покажу вам простий код на Visual Basic, який допоможе вам виконати цю задачу самостійно.

Розподіл файлу Excel на окремі файли для кожного аркуша

Наприклад, ми маємо річний звіт, в якому в деталях викладені показники компанії за кожен місяць. Як ви можете побачити на ілюстрації нижче:

Як розбити файл Excel на окремі документи (за листами)

Ось перероблений текст з тим же змістом:

Код на Visual Basic, який дозволяє розділити таблицю на кілька файлів по місяцях:

Sub РозділитиКожнийЛист()
Dim Шлях As String
Шлях = Application.ActiveWorkbook.Path
Application.ScreenUpdating = False
Application.DisplayAlerts = False
For Each лист In ThisWorkbook.Sheets
лист.ExportAsFixedFormat Type:=xlTypePDF, Filename:=Шлях & “” & лист.Name & “.pdf”
Application.ActiveWorkbook.Close False
Next
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub Перед тим як виконати цей код, виконайте такі дії: 1. Створіть нову директорію, в яку помістіть результати виконання цього коду.
2. Також, для перестороги, зробіть резервну копію оригінального файлу.

Тепер напишіть функцію на Visual Basic і сміливо виконуйте код.

Цей код допоможе знайти маршрут до директорії, де розташований файл.

Яким чином він функціонує?

Дуже легко, він відкриває кожен документ і зберігає його в якості окремого файлу, використовуючи таку ж назву.

Де слід вставити цей код?

Інструкція по виконанню крок за кроком:

  • Натисніть на вкладку “Розробник”;

Спосіб розподілу файлів Excel на окремі документи (по листах)

  • Потім запустіть VBA;

Ось перероблений текст з тим же змістом:

Спосіб поділу файлу Excel на окремі листи

  • Клацніть правою кнопкою миші на будь-якому аркуші;

Способи розподілу файлу Excel на різні файли (по аркушах)

  • Натисніть на “Вставка” -> “Модуль”;

Способи поділу файлу Excel на окремі документи (по листах)

  • Вставте наш код у відкритому вікні;

Спосіб поділу файлу Excel на різні файли (по листах)

  • Тепер виконайте код.

Звичайно! Ось переписаний текст з збереженням первинного змісту:

Спосіб розділення файлу Excel на окремі листи

Отже, після запуску коду ваш файл буде автоматично поділено на кілька окремих файлів, кожен з яких відповідатиме одному листу. Це дуже практично, тому рекомендую зберегти цей код. Навіть якщо на даний момент він не вимагається, у майбутньому його використання буде обов’язково корисним.

Як я зазначав раніше, назва файлу відповідає назві аркуша.

Способи розділення файлу Excel на окремі файли (по аркушах)

Не забудьте зберегти файл з правильним розширенням (. XLSM), оскільки ми використовуємо функції Visual Basic.

У програмному забезпеченні я свідомо налаштував все так, щоб ви не помічали всі процеси, які відбуваються, і це не створювало вам незручностей. Якщо вам потрібен доступ до цих даних, ви можете змінити це налаштування.

Проте я знову наголошую, що перед використанням цієї функції важливо зробити резервну копію вашого файлу! Адже в разі, якщо Excel зупинить свою роботу через якусь помилку або виникне якась непередбачувана ситуація, ви ризикуєте втратити всі свої дані!

Розподіл файлу Excel на декілька PDF файлів за окремими аркушами

Ось код, який можна використати в такій ситуації:

vba
Sub РозділитиКоженЛист()
Dim Шлях As String
Шлях = Application.ActiveWorkbook.Path
Application.ScreenUpdating = False
Application.DisplayAlerts = False

For Each лист In ThisWorkbook.Sheets
лист.Copy Шлях & “” & лист.Name & “.xlsx”
Application.ActiveWorkbook.Close False
Next лист

Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub

Не забувайте спочатку створити папку та обов’язково скопіювати оригінальний файл. Код розбиватиме вашу таблицю на сторінки і для кожної з них буде створено окремий PDF-документ.

Виділіть тільки ті робочі аркуші, що містять слово або фразу, і збережіть їх як окремі файли Excel

Існують ситуації, коли необхідно сформувати окремий файл, що міститиме лише ті сторінки, у заголовках яких присутні визначені слова.

Припустимо, у вас є звітні сторінки за кілька років, і в назвах кожного аркуша вказано рік і місяць. Але вам необхідно залишити лише ті аркуші, що стосуються 2020 року. Яким чином це можна реалізувати?

Ось унікальний варіант вашого тексту:

Нижче наведено код на Visual Basic:

Sub РозділитиКоженЛист()
Dim Шлях As String
Dim ТекстДляПошуку As String
ТекстДляПошуку = “2020”
Шлях = Application.ActiveWorkbook.Path
Application.ScreenUpdating = False
Application.DisplayAlerts = False

Для кожного листа In ThisWorkbook.Sheets
If InStr(1, листа.Name, ТекстДляПошуку, vbBinaryCompare) <> 0 Then
листа.Copy
Application.ActiveWorkbook.SaveAs Filename:=Шлях & “” & листа.Name & “.xlsx”
Application.ActiveWorkbook.Close False
End If
Next

Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub

Як вам, мабуть, вдалося зауважити, ми безпосередньо в коді ініціювали змінну та присвоїли їй значення 2020.

Далі цей код проходить через усі сторінки та перевіряє, чи містить назва необхідний нам фрагмент (тобто потрібний рік). Після цього він зберігає тільки ті листи, в іменах яких знайдено відповідності.

У разі, якщо не буде виявлено жодних збігів, результатом буде 0.

В даному коді застосовується цикл “Якщо/То”. Якщо він виявляє необхідне текстове значення в назві аркуша, то зберігає його окремо, а в разі відсутності – просто ігнорує.

Читайте також
nBook - найцікавіше зі світу IT, Hi-Tech
Додати коментар