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

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

І звичайно ж, можна зробити це руками, але це дуже довго і неефективно.

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

Ділимо файл Excel на кілька файлів за листами

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

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

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

Sub SplitEachWorksheet() Dim FPath As String FPath = Application.ActiveWorkbook.Path Application.ScreenUpdating = False Application.DisplayAlerts = False For Each ws In ThisWorkbook.Sheets . .Name & “.xlsx” Application.ActiveWorkbook.Close False Next Application.DisplayAlerts = True Application.ScreenUpdating = True End Sub

Перш ніж запустити цей код, зробіть таке:

  1. Створіть нову папку, куди помістіть результати цього коду;
  2. А також, про всяк випадок, зробіть копію оригінального файлу.

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

Цей код знайде шлях до папки з файлом.

Як він працює?

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

Куди розмістити цей код?

Покрокова інструкція:

  • Клацніть на “Розробник”;

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

  • Далі відкрийте VBA;

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

  • Правою кнопкою мишки на будь-який аркуш;

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

  • Клацніть на “Insert” -> “Module”;

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

  • Помістіть наш код у вікно, що відкрилося;

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

  • Тепер запустіть код.

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

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

Як я говорив раніше, ім'я файлу таке саме, як і ім'я аркуша.

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

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

У коді я спеціально зробив так, щоб ви не бачили все, що відбувається і це вам не заважало. Ви можете виправити це, якщо вам навпаки потрібно бачити те, що відбувається.

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

Ділимо файл Excel на кілька PDF файлів за листами

Ось код для такого випадку:

Sub SplitEachWorksheet() Dim FPath As String FPath = Application.ActiveWorkbook.Path Application.ScreenUpdating = False Application.DisplayAlerts = False For Each ws In ThisWorkbook.Sheets ws.Copy “” & ws.Name & “.xlsx” Application.ActiveWorkbook.Close False Next Application.DisplayAlerts = True Application.ScreenUpdating = True End Sub

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

Розділіть лише ті робочі аркуші, в яких міститься слово/фраза, на окремі файли Excel

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

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

Ось код Visual Basic:

Sub SplitEachWorksheet() Dim FPath As String Dim TexttoFind As String TexttoFind = “2020” FPath = Application.ActiveWorkbook.Path Application.ScreenUpdating = False Application.DisplayAlerts = False Для кожного ws In ThisWorkbook.Sheets If InStr(1 TexttoFind, vbBinaryCompare) <> 0 Then ws.Copy Application.ActiveWorkbook.SaveAs Filename:=FPath & “” & ws.Name & “.xlsx” Application.ActiveWorkbook.Close False End Next Application.DisplayAlerts = True Application. = True End Sub

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

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

Якщо збіги не будуть знайдені, результат буде 0.

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

nBook
Додати коментар