Перейти к содержимому

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

  • автор:

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

Как разделить Excel документ онлайн Выберите и загрузите Excel документ, который хотите разделить. Укажите необходимые номера страниц и нажмите кнопку Разделить. Нажмите кнопку Скачать и сохраните разделенный Excel документ. Чтобы отправить ссылку на скачивание документа по электронной почте нажмите кнопку Email.

Как разделить два документа Excel?

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

Как в Excel сделать несколько страниц?

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

Как вытащить лист из Excel?

Сохранение одного листаЩелкните правой кнопкой мыши ярлычок листа.Щелкните Переместить или скопировать.Щелкните раскрывающееся меню Переместить выбранные листы в книгу. Выберите (новая книга).Нажмите кнопку ОК. Откроется новая книга с перемещенным листом. . Щелкните Файл > Сохранить в новой книге.

Как сделать разделение в Excel?

Выделите ячейку или столбец с текстом, который вы хотите разделить. На вкладке Данные нажмите кнопку Текст по столбцам. В мастере распределения текста по столбцам установите переключатель с разделителями и нажмите кнопку Далее. Выберите разделители для своих данных.

Как сделать несколько окон Excel?

Одновременный просмотр двух листов в одной книгеНа вкладке Вид в группе Окно щелкните элемент Новое окно.На вкладке Вид в группе Окно нажмите кнопку Рядом .В окне каждой книги щелкните лист, который нужно сравнить.Чтобы прокручивать одновременно оба , на вкладке Вид нажмите кнопку Синхронная прокрутка.

Как разбить файл на несколько архивов?

Разделить / разбить файл или папку на несколько архивов с помощью 7-Zip. Нажимаем правой кнопкой мыши на файле или папки которую необходимо заархивировать, выбираем «7-Zip- Добавить к архиву». В результате появилось несколько архивов не превышающих 10 Мб.

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

Как разделить TXT документ онлайнВыберите и загрузите TXT документ, который хотите разделить.Укажите необходимые номера страниц и нажмите кнопку Разделить.Нажмите кнопку Скачать и сохраните разделенный TXT документ.Чтобы отправить ссылку на скачивание документа по электронной почте нажмите кнопку Email.

Как разделить файл 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 или PDF).

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

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

Разделить каждый лист на отдельный файл Excel

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

Разделить каждый лист Excel на отдельные файлы (шаг за шагом)

Чтобы разделить эти листы в отдельный файл Excel, вы можете использовать приведенный ниже код VBA:
‘Код, созданный Sumit Bansal из trumpexcel.com Sub SplitEachWorksheet () Dim FPath As String FPath = Application.ActiveWorkbook.Path Application.ScreenUpdating = False Application.DisplayAlerts = False For Each ws In ThisWorkbook.Sheets ws.Copy Application.ActiveWorkbook.SaveAs Имя файла: = FPath & «\» & ws.Name & «.xlsx» Application.ActiveWorkbook.Close False Next Application.DisplayAlerts = True Application.ScreenUpdating = True End Sub
Перед использованием приведенного выше кода VBA необходимо убедиться в нескольких вещах:

  1. Создайте папку, в которой вы хотите получить все полученные файлы.
  2. Сохраните основной файл Excel (в котором есть все нужные вам рабочие листы в виде отдельных файлов) в этой папке.

Как только вы это сделаете, вы можете поместить указанный выше код VBA в файл и запустить его.

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

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

Ниже приведены шаги по размещению этого кода VBA в книге Excel (они будут такими же для всех других методов, показанных в этом руководстве):

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

Ниже приведены шаги по размещению кода в редакторе Visual Basic, где он может быть выполнен:

  • Щелкните вкладку Разработчик.
  • В группе «Код» выберите параметр «Visual Basic». Это откроет редактор VB. [Вы также можете использовать сочетание клавиш — ALT + F11]
  • В редакторе VB щелкните правой кнопкой мыши любой объект книги, над которой вы работаете.
  • Наведите курсор на опцию Вставить
  • Щелкните по модулю. Это вставит новый модуль
  • Дважды щелкните объект Module. это откроет окно кода для модуля
  • Скопируйте приведенный выше код VBA и вставьте его в окно кода модуля.
  • Выберите любую строку в коде и нажмите зеленую кнопку воспроизведения на панели инструментов, чтобы запустить макрокод VBA.

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

Имя каждого сохраненного файла совпадает с именем листа в основном файле.

Разделить каждый лист Excel на отдельные файлы (шаг за шагом)

Поскольку вы поместили код VBA в книгу Excel, вам необходимо сохранить его в формате .XLSM (который является форматом с поддержкой макросов). Это гарантирует, что макрос будет сохранен и будет работать, когда вы откроете этот файл в следующий раз.

Обратите внимание, что я использовал строки Application.ScreenUpdating = False и Application.DisplayAlerts = False в коде, чтобы все происходило в серверной части и не видеть, что происходит на вашем экране. Как только код запускается, разделяет листы и сохраняет их, мы возвращаем им значение ИСТИНА.

Рекомендуется создать резервную копию основного файла (в котором есть листы, которые вы хотите разделить). Это гарантирует, что вы не потеряете свои данные в случае, если что-то пойдет не так, или если Excel решит замедлить работу или дать сбой.

Разделить каждый рабочий лист и сохранить как отдельные PDF-файлы

Если вы хотите разделить листы и сохранить их как файлы PDF вместо файлов Excel, вы можете использовать следующий код:
‘Код, созданный Sumit Bansal из trumpexcel.com Sub SplitEachWorksheet () Dim FPath As String FPath = Application.ActiveWorkbook.Path Application.ScreenUpdating = False Application.DisplayAlerts = False For Each ws In ThisWorkbook.Sheets ws.Copy Application.ActiveSheet.ExportAsport Введите: = xlTypePDF, Имя файла: = FPath & «\» & ws.Name & «.xlsx» Application.ActiveWorkbook.Close False Next Application.DisplayAlerts = True Application.ScreenUpdating = True End Sub
Перед использованием этого кода необходимо убедиться в следующем:

  1. Создайте папку, в которой вы хотите получить все полученные файлы.
  2. Сохраните основной файл Excel (в котором есть все нужные вам рабочие листы в виде отдельных файлов) в этой папке.

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

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

Если у вас много листов в книге, и вы хотите разделить только те листы, в которых есть определенный текст, вы также можете это сделать.

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

Теперь предположим, что вы хотите разделить все листы на период с 21 по 2022 год и сохранить их в виде отдельных файлов Excel. Для этого вам нужно как-то проверить имя каждого рабочего листа, и только те листы, которые имеют номер 2021-2022, должны быть разделены и сохранены, а остальные должны быть оставлены нетронутыми.

Это можно сделать с помощью следующего макроса VBA:
‘Код, созданный Sumit Bansal из trumpexcel.com Sub SplitEachWorksheet () Dim FPath As String Dim TexttoFind As String TexttoFind = «2020» FPath = Application.ActiveWorkbook.Path Application.ScreenUpdating = False Application.DisplayAlerts = False For Each ws In ThisWorkbook. Таблицы Если InStr (1, ws.Name, TexttoFind, vbBinaryCompare) 0 Тогда ws.Copy Application.ActiveWorkbook.SaveAs Имя файла: = FPath & «\» & ws.Name & «.xlsx» Application.ActiveWorkbook.Close False End If Next Application.DisplayAlerts = True Application.ScreenUpdating = True End Sub
В приведенном выше коде я использовал переменную TexttoFind, которой изначально было присвоено значение «2020».

Затем код VBA использует цикл For Next в VBA для просмотра каждого рабочего листа, а затем проверяет имя каждой функции INSTR рабочего листа. Эта функция проверяет, есть ли в имени листа слово 2021-2022 или нет. Если это так, он вернет номер позиции, в которой он нашел этот текст (в данном случае это 2021-2022 годы).

И если он не находит искомый текст, он возвращает 0.

Это используется с условием IF Then. Поэтому, если имя листа содержит текстовую строку 2021-2022, оно будет разделено и сохранено как отдельный файл. И если у него нет этой текстовой строки, условие IF не будет выполнено, и ничего не произойдет.

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

Про сборку листов из нескольких книг в одну текущую я уже писал здесь. Теперь разберем решение обратной задачи: есть одна книга 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 не будет опубликован. Обязательные поля помечены *