Как разделить листы в excel на отдельные файлы
Перейти к содержимому

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

  • автор:

Как разделить файл Excel на отдельные файлы (по листам)

Такое бывает довольно часто, делаешь ежегодный отчет, а в нем 12 месяцев, соответственно 12 листов. И нужно разделить этот файл таким образом, чтобы каждый лист стал отдельным файлом.

И конечно же, можно сделать это руками, но это крайне долго и неэффективно.

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

Делим файл Excel на несколько файлов по листам

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

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

Перед тем, как запустите этот код, сделайте следущее:

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

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

Этот код сам найдет путь до папки с файлом.

Как он работает?

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

Куда поместить этот код?

  • Щелкните на «Разработчик»;
  • Далее откройте VBA;
  • Правой кнопкой мышки на любой лист;.
  • Щелкните на «Insert» -> «Module»;
  • Поместите наш код в открывшееся окошко;
  • Теперь запустите код.

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

Как я говорил ранее, имя файла такое же, как и имя листа.

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

В коде я специально сделал так, чтобы вы не видели все что происходит и это вам не мешало. Вы можете исправить это если вам наоборот нужно видеть то, что происходит.

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

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

Вот код для такого случая:

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

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

Бывают и такие ситуации, что отдельный файл нужно создать только для тех страниц, в названии которых есть определенный текст.

Допустим, у вас есть страницы отчета за разные года, в названии каждого листа указан год и месяц. Но вам нужно сохранить только те листы, которые относятся к 2020 году. Как это сделать?

Вот код Visual Basic:

Как вы могли заметить, прямо в коде, мы создали переменную и задали ей значение 2020.

Затем этот код просто проходится по каждой странице и проверяет есть ли в имени нужная нам часть (то есть нужный год). А далее сохраняет отдельно только те листы, в имени которых он нашел совпадения.

Если совпадения не будут найдены — результат будет 0.

В этом коде используется цикл «Если/То». Если он находит нужное текстовое значение в имени листа, то сохраняет его отдельно, если не находит — просто пропускает.

Как сохранить листы рабочей книги Excel отдельными файлами?

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

Традиционно предложу два способа позволяющих перемещать листы в отдельные файлы Excel.

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

Первый — стандартными средставми приложения Excel. Кликаем правой кнопкой мышки в области наименований листов и выбираем пункт меню «Переместить/скопировать. «

как создать копию листа в excel

В поле «Переместить выбранные листы в книгу» выбираем либо «(новая книга)», либо выбираем название файла, в который собираемся перемещать лист (этот файл должен быть предварительно открыт). Жмем «Ок» — лист перемещается. Да, если отметить галочкой опцию «Создать копию», то вместо перемещения листа произойдет его копирование, а также можно будет указать место для вставки листа.

Как сохранить листы отдельными файлами при помощи надстройки?

Второй способ перемещения листов в отдельные книги — прибегнуть к помощи макроса (надстройки). Если специфика Вашей деятельности связана с тем, что Вам приходится часто расшивать рабочие книги на отдельные листы, то есть выделять листы из книги и создавать из этих листов отдельные файлы, то полезным было бы иметь такую надстройку в арсенале своих инструментов. Макрос начинает работать после нажатия кнопки, расположенной на панели инструментов и вызывает диалоговое окно, в котором пользователь имеет возможность задать папку, в которую будут сохранены раскрепленные листы, а также выбрать ряд других опций.

Использование надстройки позволяет:

1. Вызывать диалоговое окно надстройки одним кликом мыши прямо из вкладки на ленте;

2. выбирать папку, в которую будут сохраняться рабочие книги;

3. при делении рабочей книги на отдельные файлы назвать новые файлы именами листов;

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

5. создавать уникальные имена файлов, добавляя текущую дату и время к именам файлов;

6. выбирать наиболее подходящее расширение (тип) для новых рабочих книг.

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

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

Возможно, вам придется разделить большую книгу на отдельные файлы Excel, сохранив каждый рабочий лист книги как отдельный файл Excel. Например, вы можете разделить книгу на несколько отдельных файлов Excel, а затем передать каждый файл другому человеку для обработки. Поступая таким образом, вы можете заставить определенных людей обрабатывать определенные данные и сохранить ваши данные в безопасности. В этой статье будут представлены способы разделения большой книги на отдельные файлы Excel на основе каждого рабочего листа.

  1. Разделение книги на отдельные файлы Excel с копированием и вставкой
  2. Разделите книгу на отдельные файлы Excel с помощью функции перемещения или копирования
  3. Разделить книгу на отдельные файлы Excel с кодом VBA
  4. Разделите книгу на отдельные файлы Excel / PDF / CSV / TXT с помощью Kutools for Excel легко
Разделение книги на отдельные файлы Excel с копированием и вставкой

Обычно, используя Копировать Команда и Вставить Команда может вручную сохранить книгу как отдельный файл Excel. Во-первых, выберите весь лист, который вы хотите сохранить как отдельный файл, создайте новую книгу, а затем вставьте ее в новую книгу, в конце сохраните ее.

Это простой в использовании способ, если вам нужно разделить всего несколько листов в отдельные файлы. Однако разделение множества листов путем копирования и вставки вручную должно занимать много времени и утомительно.

Разделите книгу на отдельные файлы Excel с помощью функции перемещения или копирования

Этот метод представит функцию перемещения или копирования для перемещения или копирования выбранных листов в новую книгу и сохранения в виде отдельной книги. Пожалуйста, сделайте следующее:

1. Выберите листы на панели вкладок «Лист», щелкните правой кнопкой мыши и выберите Переместить или скопировать из контекстного меню. Смотрите скриншот:

Внимание: Держа Ctrl клавишу, вы можете выбрать несколько несмежных листов, щелкая их один за другим на панели вкладок Лист; держа Shift клавишу, вы можете выбрать несколько соседних листов, щелкнув первый и последний на панели вкладок «Лист».

2. В диалоговом окне «Перемещение или копирование» выберите (новая книга) из Бронировать раскрывающийся список, проверьте Создать копию и нажмите OK кнопка. Смотрите скриншот:

3. Теперь все выбранные листы копируются в новую книгу. Нажмите Файл > Save. чтобы сохранить новую книгу.

Быстро разбейте книгу на отдельные файлы Excel / PDF / TXT / CSV в Excel

Обычно мы можем разделить книгу на отдельные файлы Excel с помощью Переместить или скопировать функция в Excel. Но Kutools for Excel’s Разделить книгу Утилита может помочь вам легко разделить книгу и сохранить каждый лист как отдельный файл PDF / TEXT / CSV или книгу в Excel.

книга разделения рекламы Excel

Kutools for Excel — Включает более 300 удобных инструментов для Excel. Полнофункциональная бесплатная пробная версия 30 -день, кредитная карта не требуется! Get It Now

Разделить книгу на отдельные файлы Excel с кодом VBA

Следующий код VBA может помочь вам быстро разделить несколько листов текущей книги на отдельные файлы Excel, пожалуйста, сделайте следующее:

1. Создайте новую папку для книги, которую вы хотите разделить, так как разделенные файлы Excel останутся в той же папке, что и эта основная книга.

2. Удерживайте ALT + F11 ключи в Excel, и он открывает Microsoft Visual Basic для приложений окно.

3. Нажмите Вставить > Модулии вставьте следующий код в окно модуля.

VBA: разделите книгу на несколько книг и сохраните в одной папке

4, нажмите F5 ключ для запуска этого кода. И книга разделена на отдельные файлы Excel в той же папке, что и исходная книга. Смотрите скриншот:

Внимание: Если один из листов имеет то же имя, что и книга, этот VBA не может работать.

Разделите книгу на отдельные файлы Excel / PDF / CSV / TXT с помощью Kutools for Excel легко

Если у вас есть Kutools for Excel установлен, его Разделить книгу Инструмент может легко и быстро разделить несколько листов в отдельные файлы Excel всего за несколько кликов.

Kutools for Excel — Включает более 300 удобных инструментов для Excel. Полнофункциональная бесплатная пробная версия 30 -день, кредитная карта не требуется! Get It Now

1. После установки Kutools for Excel, нажмите Kutools Дополнительная > Разделить книгу , см. снимок экрана:

2. В Разделить книгу диалоговом окне выполните следующие операции:
(1) По умолчанию отмечены все имена рабочих листов. Если вы не хотите разделять некоторые рабочие листы, вы можете снять с них отметку;
(2) Проверьте Сохранить тип вариант;
(3) Из Сохранить как в раскрывающемся списке выберите один тип файла, который вы хотите разделить и сохранить.
(4) Затем нажмите Трещина кнопку.

Внимание: Если вы не хотите разделять скрытые или пустые листы, вы можете проверить Пропустить скрытые листы or Пропускать пустые листы пунктом.

3. В диалоговом окне «Обзор папки» укажите папку назначения для сохранения разделенных отдельных файлов и нажмите кнопку OK кнопку.

Теперь проверенные листы сохраняются как новые отдельные книги. Каждая новая книга названа в соответствии с именем исходного листа. Смотрите скриншот:

Kutools for Excel‘s Разделить книгу Инструмент позволяет легко разделить активную книгу на отдельные файлы Excel (один файл содержит один рабочий лист), файлы CSV, файлы TXT или файлы PDF по мере необходимости. Вы можете настроить пропуск всех пустых и скрытых листов. Получите бесплатную пробную версию!

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

Про сборку листов из нескольких книг в одну текущую я уже писал здесь. Теперь разберем решение обратной задачи: есть одна книга Excel, которую нужно «разобрать», т.е. сохранить каждый лист как отдельный файл для дальнейшего использования.

save-sheets-as-files.png

Примеров подобного из реальной жизни можно привести массу. Например, файл-отчет с листами-филиалами нужно разделить на отдельные книги по листам, чтобы передать затем данные в каждый филиал и т.д.

Если делать эту процедуру вручную, то придется для каждого листа выполнить немаленькую цепочку действий (выбрать лист, правой кнопкой по ярлычку листа, выбрать Копировать, указать отдельный предварительно созданный пустой файл и т.д.) Гораздо проще использовать короткий макрос, автоматизирующий эти действия.

Способ 1. Простое разделение

Нажмите сочетание Alt+F11 или выберите в меню Сервис — Макрос — Редактор Visual Basic (Tools — Macro — Visual Basic Editor) , вставьте новый модуль через меню Insert — Module и скопируйте туда текст этого макроса:

Если теперь выйти из редактора Visual Basic и вернуться в Excel, а затем запустить наш макрос (Alt+F8), то все листы из текущей книги будут разбиты по отдельным новым созданным книгам.

Способ 2. Разделение с сохранением

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

Этот макрос сохраняет новые книги-листы в ту же папку, где лежал исходный файл. При необходимости сохранения в другое место, замените wb.Path на свой путь в кавычках, например «D:\Отчеты\2012» и т.п.

Если нужно сохранять файлы не в стандартном формате книги Excel (xlsx), а в других (xls, xlsm, xlsb, txt и т.д.), то кроме очевидного изменения расширения на нужное, потребуется добавить еще и уточнение формата файла — параметр FileFormat:

Для основных типов файлов значения параметра FileFormat следующие:

  • XLSX = 51
  • XLSM = 52
  • XLSB = 50
  • XLS = 56
  • TXT = 42

Способ 3. Сохранение в новые книги только выделенных листов

Если вы хотите раскидать по файлам не все листы в вашей книге, а только некоторые, то макрос придется немного изменить. Выделите нужные вам листы в книге, удерживая на клавиатуре клавишу Ctrl или Shift и запустите приведенный ниже макрос:

Создавать новое окно и копировать через него, а не напрямую, приходится потому, что Excel не умеет копировать группу листов, если среди них есть листы с умными таблицами. Копирование через новое окно позволяет такую проблему обойти.

Способ 4. Сохранение только выделенных листов в новый файл

Во всех описанных выше способах каждый лист сохранялся в свой отдельный файл. Если же вы хотите сохранить в отдельный новый файл сразу группу выделенных предварительно листов, то нам потребуется слегка видоизменить наш макрос:

Способ 5. Сохранение листов как отдельных PDF-файлов

  • для этого используется уже другой метод (ExportAsFixedFormat а не Copy)
  • листы выводятся в PDF с параметрами печати, настроенными на вкладке Разметка страницы (Page Layout)
  • книга должна быть сохранена на момент экспорта

Нужный нам код будет выглядеть следующим образом:

Способ 6. Готовый макрос из надстройки PLEX

Если лень или нет времени внедрять все вышеописанное, то можно воспользоваться готовым макросом из моей надстройки PLEX:

Ссылки по теме

Решение классное, но перевод в значения целого листа занимает время, у меня лист с небольшим объемом данных.
В связи с этим, возник вопрос: как преобразовать данную формулу, чтобы она не весь лист считала, а только диапазон. В моем случае A1:F67.
И сразу на будущее спрошу, как записать два диапазона? (вдруг понадобится такое)

А можете подсказать еще такой нюанс.
Как сохранить книгу созданную. Выдает ошибку

С одной вкладкой срабатывает (Способ 2), а с несколькими нет (Способ 4)

:(

Добрый день.
Для полного счастья в 3 способе не хватает возможности «разорвать связи» в новых листах. Вроде задача простая, а сообразить не могу

Большое спасибо за очень полезную информацию!
Сработали все 3 способа (первый не пробовала), за исключением 2 моментов:

при способе №2 из 40 с лишним вкладок открылось только 25 шт в новых документах с сохранением названия вкладки, как и должно было быть. Остальные вкладки даже не показались, мб есть какое-то ограничение по кол-ву вкладок?

Второй момент: Подскажите пожалуйста,как нужно дописать макрос, чтобы способ номер 3 сохранял вкладки в документы с названием вкладок, как в способе 2?

Нужно было создать 370 файлов из вкладок, комп заругался что его ресурсов на это не хватает (при выполнении макроса открывается еще одно окно Excel с данными. И так по каждой вкладке). Чтобы всего хватало и не приходилось закрывать созданные файлы добавил строчку. Может кому пригодится. Взял макрос из примера 2.

Добрый день! Спасибо за Ваши подсказки в макросах )

Я редко пользуюсь VBA, поэтому туплю чуток я не могу понять, как правильно допилить этот код под 3 способ.

Мне нужно, чтобы лист сохранялся только значениями с названием из ячейки М1 и закрывался. Ругается на

говорит, что объект не поддерживает этот способ и метод .

Помогите пожалуйста его привести в рабочий вид :"-(

Николай, добрый вечер!
У меня вопрос почти такой же, как у Юлии, но только про формат .pdf. Пробовал в Способе 2 менять расширение на ".pdf" — конечно, файлы создавались, но не открывались, затем пробовал прикрутить в код такую строку:

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

Sub SplitSheets5()
ActiveWorkbook.RefreshAll
Dim s As Worksheet

For Each s In ActiveWindow.SelectedSheets
s.ExportAsFixedFormat Filename:=»C:\doc\» & «\» & s.Name & «.pdf», Type:=xlTypePDF
Next
End Sub

Подскажите как при сохранении листа в PDF здесь задать имя файла «Имя файла, имя листа»

Sub SplitSheets5()
Dim s As Worksheet

For Each s In ActiveWorkbook.Worksheets
s.ExportAsFixedFormat Filename:=ThisWorkbook.Path & «\» & s.Name & «.pdf», Type:=xlTypePDF
Next
End Sub

Очень интересная статья, спасибо автору.
У меня ситуация, что нужно сохранить файл в формате (Tab delimited) *.txt
в таком случае каким будет значение File Format: ?

или примерно так:
ActiveWorkbook.SaveAs Filename:= p & «\Лист2.txt», FileFormat:= .

Вынужден обратиться за помощью

Sub invoice()
Sheets(Array(«INVOICE Nr. 0200», «Specificatie 0200», «DVI» [IMG] ).Select
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
«G:\KW 5\invoice 200.pdf», Quality:=xlQualityStandard, IncludeDocProperties _
:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
End Sub

1 можна изменить (INVOICE Nr. 0200″, «Specificatie 0200», «DVI» ))на проста (Select Sheet) выделиные листы

2 адрес сохранения вместо (G:\KW 5\invoice 200.pdf» [IMG] в папку где находится книга с названием PDF по ячейки с Sheet XXXX B9.

Помогите пожалуйста, я в макросах ни бум бум, мне нужно чтобы выделенный лист (ы) из книги сохранялись с именем такого вида:
«название листа» № «номер ячейки» от «номер ячейки» (чтобы получилось например счет №23 от 10.04.2017)
в формате PDF и чтобы файл после сохранения не открывался, а просто сохранялся в ту же папку откуда документ?

пытался компоновать макросы в примерах но не получилось((

В том-то и дело — 1 лист. Это я пробовал накладную распечатать. (1 книга = 3 листа, печатается только один.)
В результате получается 1 стр. PDF.

Попробовал на работе — тоже самое. 10 секунд на сохранение файла *.pdf.
Может надо использовать какой-то определённый PDF драйвер/принтер?

:/

win8.1 x64 + Office 2007/2010.
Office без обновлений. Отсутствие обновок Оффиса может до такой степени замедлить работу драйвера PDF?

:o

p.s. Только что заметил — PDF записались в папку, откуда был взят xls файл. А так же копии этих файлов были записаны в папку автостарта, где хранится personal.xlsb . Соответственно, при старте Excel’a он пытается ещё открыть и эти PDF файлы.
Ту миллион долларс (с)

:)

Понятно. Я в свою очередь решил поменять .pdf на .xlsx Принцип тот же практически.

:)

Добрый день. Второй день пытаюсь собственными силами допилить 2 пример, только смысл в том что я хочу что бы макрос сохранял не все листы, а лист/листы с определенным названием. Подскажите пожалуйста как прописать данное действие( Заранее благодарен за помощь!

А можно на примере этого макроса сделать перевод в *pdf одним файлом?

Sub SplitSheets5()
Dim s As Worksheet

For Each s In ActiveWorkbook.Worksheets
s.ExportAsFixedFormat Filename:=ThisWorkbook.Path & «\» & s.Name & «.pdf», Type:=xlTypePDF
Next
End Sub

Также столкнулся с такой проблемой, дописал чтобы пропускало скрытые листы:

Извиняюсь, может не сюда, но мне надо получить из файла с большим кол-вом листов, таблицу из двух колонок:
1. Имя листа;
2. содержимое ячейки A9 каждого листа (это текст, название организации).

Кто может подсказать?
Можно в отдельном файле, можно в том же на новый лист.
или направьте в какой теме спросить.

Что-то я сглазил.
В строке:

Большое спасибо за тему и множество комментариев.
Не нашёл здесь готового решения для такого случая:
Нужно сохранить 2 конкретных листа с определёнными названиями из книги со множеством листов в отдельную книгу и задать ей общее имя.
Также формулы на листах нужно заменить на значения с сохранением формата ячеек.

Plex помог не целиком. Да и хотелось бы сделать кнопку на одном из листов, которая бы выполняла эту процедуру.

Буду чертовски рад комментариям:)

Подскажите, пожалуйста, пробовал по 5 способу добавить макрос.
Теперь при каждом открытии любой книги Excel создаются два файла *.pdf и никак не получается это убрать, уже поудалял все макросы.

Здравствуйте Николай, пытаюсь воспользоваться пятым способом, но вылетает ошибка 1004
Помогите пожалуйта

Скорректированный код для случая присвоения имени из ячейки C1:

Приветствую всех!
Помогите пожалуйста, был написан макрос, но к сожалению теперь утерян :

Сохраниение активного листа в новую книгу, в папку где находится исходный файл, имя файла = название листа
Далее отправка нового файла через Outlook , адрес эл.почты из ячейки A1, тема письма прописана в макросе

Сейчас есть только начало:

Sub SohrList()
Dim CurrentWin As Window
Dim VremWin As Window
Set CurrentWin = ActiveWindow
Set VremWin = ActiveWorkbook.NewWindow
CurrentWin.ActiveSheet.Copy
VremWin.Close
sPath = ThisWorkbook.Path
ThisWorkbook.SaveAs (ThisWorkbook.Path)
End Sub

макрос создает файл с листом, но не берет название и не сохраняет

VBA выдает при использовании любого метода

Compile error: Syntax error

Раньше все работало.

Попробовал Вариант 2, но есть значительные недостатки данного макроса:
1. Обновление экрана не отключено, из-за этого процесс по длительности возрастает в разы, но это только начало сказки.
2. При большом объёме листов в книге, все листы, которые разделяются и сохраняются в файлы не закрываются, а накапливаются открытыми, из-за этого процесс EXCEL только наращивает в памяти и в итоге вообще зависает.
3. В шапке макроса отсутствует Msg бокс для запуска макроса, может запуститься и «повесит» всю работу компьютера.
4. После работы макроса не понятно, какой объём работы выполнил макрос?

После всего выше сказанного, прошу рассмотреть данный вариант:

Sub Splitbook()
Dim msg
msg = MsgBox(«Хотите разделить листы книги на отдельные книги excel?», vbYesNo, «Разделение листов по отдельным книгам!»
If msg = 7 Then Exit Sub

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *