Рубрики
Excel Tips & Tricks

Как сохранить лист в отдельный файл Excel

Периодически приходится сталкиваться с задачей, когда необходимо в Excel сохранить листы рабочей книги как отдельные файлы.
Зачем? Например, есть файл с листами, которые содержат какие-либо данные по филиалам. Эти данные нужно разослать в филиалы, но весь файл мы отправить не можем, т.к. в нём содержится информация по другим структурным подразделениям.

Придётся разделить файл на несколько. Подобных примеров можно привести много.
Можно делать это вручную, но когда данных много, это потеря времени. К тому же, эта процедура может повторяться каждый месяц, неделю и пр.

Сохраняем листы в отдельные файлы с помощью VBA

Обратимся к возможностям Visual Basic for Applications.
Для себя я написал небольшой код на VBA, который автоматизировал эту задачу. Один раз написал и использую постоянно.
Как он работает?
Мой код определяет место на диске, где расположен файл Excel, в котором он запущен и создаёт внутри директорию с именем «newdir» (название можно изменить на своё). Далее он копирует каждый лист, сохраняет его как отдельную рабочую книгу в папку «newdir» и закрывает сохранённый файл. Именем файла будет имя вкладки.
Файлы можно сохранить и в текущую директорию, но я создал внутри папку для того, чтобы избежать возможных повторений имён файлов. К тому же все документы оказываются в одном месте, что удобно.

Итак, код.

Sub save_as_files()

Dim sPath As String
Dim sNewDir As String

sPath = ThisWorkbook.Path
sNewDir = "\newdir"
MkDir sPath & sNewDir
sPath = sPath & sNewDir

For Each wsheet In ActiveWorkbook.Sheets
    wsheet.Copy
    ActiveWorkbook.SaveAs sPath & "\" & wsheet.Name & ".xlsx"
    ActiveWorkbook.Close
Next wsheet

End Sub

Вот такой несложный макрос позволяет сохранить лист Excel в отдельный файл.