Как создать новый excel файл для каждого листа

Что делает макрос: Данный макрос поможет создать новый файл для каждого листа существующей книги.

Как макрос работает

В этом макросе помечаются рабочие листы, копируется каждый лист, а затем отправляет копию в новую книгу. Надо отметить здесь, что вновь созданные книги сохраняются в том же каталоге, что и исходные, с именем, скопированного листа (wb.SaveAs ThisWorkbook.Path & «\» & ws.Name).

Код макроса

Sub SozdatNoviiFailDlyaKajdogoLista()
'Шаг 1: Объявляем переменные
Dim ws As Worksheet
Dim wb As Workbook
'Шаг 2: Запускаем цикл через листы
For Each ws In ThisWorkbook.Worksheets
'Шаг 3: Создаем новую рабочую книгу и сохраняем ее.
Set wb = Workbooks.Add
wb.SaveAs ThisWorkbook.Path & "\" & ws.Name
'Шаг 4: Копируем целевой лист в новую книгу
ws.Copy Before:=wb.Worksheets(1)
wb.Close SaveChanges:=True
'Шаг 5: Возвращаемся в п.2.
Next ws
End Sub

Важно

Не всегда возможно заменить новые книги определенными именами файлов. Windows имеет конкретные правила, которые мешают именовать файлы с определенными символами. Нельзя использовать эти символы при вводе имени файла: обратная косая черта (\), косая черта (/), двоеточие (:), звездочка (*), знак вопроса (?), трубы (|), кавычки («), больше ( > ) и меньше (<). Используя данный макрос, назвав вновь созданный файл в соответствии с именем листа может привести к ошибке. Например, макрос выдает ошибку при создании нового файла из листа под названием Май| Выручка (из-за знака «|» ).
Нельзя именовать файлы с запрещенными знаками.

Как работает этот код

  1. Шаг 1 объявляет две переменные объекта. Переменная WS создает контейнер памяти для каждого листа макросов с помощью цикла. Переменная создает контейнер для новых рабочих книг.
  2. На шаге 2 макрос начинает цикл через листы. Использование объекта ThisWorkbook гарантирует, что активный лист копирует код книги, которая создается.
  3. На шаге 3, мы создаем новую книгу и сохраняем её в том же месте, что и исходную (файл thisworkbook). Имя файла будет такое же имя, что и имя листа.
  4. Шаг 4 копия активного листа использует параметр, прежде чем отправить его к новой книге, как первую вкладку.
  5. Шаг 5 повторяем шаг 2 для следующего листа. После того как все листы будут скопированы макрос завершает работу.

Как использовать

Для реализации этого макроса, вы можете скопировать и вставить его в стандартный модуль:

  1. Активируйте редактор Visual Basic, нажав ALT + F11.
  2. Щелкните правой кнопкой мыши имя проекта / рабочей книги в окне проекта.
  3. Выберите Insert➜Module.
Оцените статью
Добавить комментарий