Сохранение листов книги в файл Excel

Разберем код макроса, который позволяет скопировать все листы книги и сохранить их в отдельные файлы в Excel.

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

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

Для сохранения листа в отдельную книгу можно воспользоваться стандартными средствами Excel.
Нажимаем правой кнопкой мыши по имени листа в нижней панели и выбираем Переместить/скопировать:

Перемещение листа в новую книгу
Далее перемещаем лист в новую книгу, сохраняем её и даем название файлу.
Однако в случае большого количества листов, которые нужно сохранить, эта процедура может занять достаточно большое количество времени.
Если предположить, что на сохранение каждого листа тратится по 30 секунд, то для книги из 20 листов мы уже потратим 10 минут.
Поэтому, чтобы иметь возможность быстро сохранить листы в отдельные файлы воспользуемся возможностями VBA и напишем макрос для сохранения листов, который позволит производить эти действия за несколько секунд.

Макрос сохранения листа Excel в файл

Переходим в редактор Visual Basic, для этого в панели вкладок выбираем Разработчик -> Visual Basic (или воспользуемся сочетанием клавиш Alt + F11).
Создаем новый модуль и записываем в него макрос (как обычно, напротив каждой строчки дается пояснение к коду):

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

Замечания

При работе с данным макросом обратите внимание на несколько важных аспектов:

  • Код MyWorkbook.Path определяет текущее местоположения файла, и сохранение происходит в данную папку. Для изменения места сохранения можно вписать любой другой путь, например "C:\Выгрузка\Август";
  • Чтобы скопировать лист в другой файл без автоматического сохранения, то удаляем из кода макроса строку №8;
  • Код ActiveWorkbook.Close закрывает новую созданную книгу, если в этом нет необходимости, то данную строку можно удалить (строка №9).

Удачи вам и до скорых встреч на страницах блога Tutorexcel.ru!

Поделиться с друзьями:
Поиск по сайту:

Комментарии (2)

  1. Наталья Залужная

    Здравствуйте! Подскажите мне, пожалуйста, по какой причине сохранение листа в файл может затягиваться на несколько минут?

    У меня есть макрос для этих целей (добрые люди написали — подарили). Но сохранение листа с результатами фильтрации в файл происходит очень долго. По 5-7, а то и 10 минут.

    Если нужно могу прикрепить код макроса. Но, может, могут быть какие-то причины в настройках excel?

    В 2007 у меня вообще «висело» все. Сейчас 2010 установила, все «летает», но не сохранение в файл.
    Помогите, пожалуйста, решить проблему. Это очень важно для меня. По 4 часа в день сохраняю, сохраняю, сохраняю…

    Открыла диспетчер задач, чтобы посмотреть, что происходит. Так вот, при сохранении состояние приложения excel — «не отвечает», загрузка ЦП — 33%.

    И, вот это состояние «не отвечает» продолжается до момента сохранения нового файла.

    Возможно ли как-то исправить?
    Буду очень благодарна!

    Если у кого-то есть предположения, но нужно посмотреть код макроса, напишите, я приложу. Буду сюда дисциплинированно заходить ежедневно. Вдруг,кто-нибудь откликнется .

Добавить комментарий

Ваш e-mail не будет опубликован.