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

Обновлено: 30.06.2024

Функциональность табличного процессора, большой спектр решаемых с его помощью задач, в том числе и довольно сложных, для которых необходимы несколько рабочих книг приводит к тому, что очень часто, работая с Excel, у пользователя открыты несколько файлов с данными. И вернувшись к такой задаче, не так-то просто найти и открыть все рабочие книги. Особенно эта проблема возникает в том случае, если рабочие книги Excel связаны между собой. Напомним, что рабочие листы и рабочие книги Excel можно связывать между собой, обеспечив таким образом изменение во вставленных данных при соответствующих изменениях в источнике. Если связываются рабочие листы, то в их сохранении проблем не возникает - ведь они являются частью одной рабочей книги. При связи нескольких рабочих книг, особенно, если таких книг больше двух, необходимо помнить, где расположена и как называется каждая из них. Для решения задачи сохранения нескольких открытых рабочих книг в Excel используется понятие рабочей области.

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

Для сохранения рабочей области необходимо выбрать "Файл -> Сохранить рабочую область" и в появившемся окне задать имя файла рабочей области. Расширение файлов рабочих областей - xlw.


Сохранение рабочей области Excel.

Открытие рабочей области осуществляется так же как и открытие любой рабочей книги Excel: можно выбрать "Файл -> Открыть" или дважды щелкнуть по ее пиктограмме. В результате этого будут открыты все рабочие книги, которые вошли в состав рабочей области.

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

Hi,
Thanks for the code, I just have a small clarification. Currently when the CSV file generates it's delimited by comma ",". even though my system setting is for CSV the delimited should be pipe "|". Not sure why the CSV is generated with comma delimiter with the above code. Is there a way i can explicitly define the delimiter for the CSV file.

Looking for your reply soonest.
Thank.
Regards,
Amit

I'm writing to determine if your application can convert multiple xls sheets to one text file and how it would order the rows. I need to have an option to order the rows in order of appearance, one line at a time one sheet at a time. Sheet 1, row 1; sheet 2, row 1, sheet 3, row1, etc. I look forward to your feedback. Thanks for the macros, they were just what I needed.
However, using "CurDir" to build the output filepath is very dangerous as it is not necessarily the folder of the Excel file that was opened - it is generally the current folder in explorer so your files could end up getting written practically anywhere. You should use Application.ThisWorkbook.Path instead.

Hi, thank you for the code, is it possible to skip some sheets and only save a few?
I've got no idea how I should start. Could you help me?

Is there any way to have the CSV files save to a folder other than the Documents folder? [quote name="Alex K123456789"]Is there any way to have the CSV files save to a folder other than the Documents folder?[/quote]
I haven't tested it, but I'm pretty the "\" in this line stands for the working directory: xcsvFile = CurDir & "\" & xWs.Name & ".csv"
If you want to change the working directory, you'll have to add another command.
If you want to save it to a folder within the working directory, say in a folder called new you just replace "\" with "\New\".
Something along those lines. Thank you very much Paul. I wound up figuring it out a little while back, but your solution is exactly what I did. Hi Alex,
Could you show me the line of code you entered in place of the "\" please? I need to be able to save these .csv files to a location on our network rather than in my local WS library. We need to allow our Customer Service people to be able to access the file and rename the location each time it is used.
I encounter bug problems with simply changing "\" to "\New\" (the VBA code does work as expected when copied straight from the info above). I am not code saavy, but I can follow directions fairly well, so any help is appreciated!

[quote name="Dawn"]Hi Alex,
Could you show me the line of code you entered in place of the "\" please? I need to be able to save these .csv files to a location on our network rather than in my local WS library. We need to allow our Customer Service people to be able to access the file and rename the location each time it is used.
I encounter bug problems with simply changing "\" to "\New\" (the VBA code does work as expected when copied straight from the info above). I am not code saavy, but I can follow directions fairly well, so any help is appreciated![/quote]

Hi Dawn, I wound up having to re-write portions and like Paul suggested, used a slightly different command. Below is the command I wrote to refresh the data in my workbook from our Data Warehouse, then refresh pivot tables and ultimately save one of the sheets as a PDF to my drive:

Сравнительно недавно (после весенне-летних обновлений 2017 года) многие пользователи Office 2016 заметили появление в левом верхнем углу экрана на панели быстрого доступа нового значка необычного вида:

Автосохранение

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

Общий доступ в старых версиях Excel

Формально, одновременное редактирование одного файла сразу несколькими пользователями существовало в Excel еще с 1997 года. Книгу нужно было положить в общую сетевую папку, а затем выбрать в меню или на вкладке Рецензирование команду Общий доступ (Review - Share Workbook) и включить единственную галочку в открывшемся окне:

Общий доступ в старых версиях Excel

В реальности практически никто этой функцией не пользовался, т.к. реализована она была откровенно слабо:

  • Уже при 3-4 одновременных подключениях к файлу Excel начинал нещадно глючить, вылетать с ошибками, терять связь с исходным файлом (и всю вашу работу за последние N минут) и т.д.
  • При одновременном изменении одних и тех же ячеек разными пользователями должно было отображаться окно разрешения конфликтов, но, по факту, это случалось далеко не всегда.
  • Изменения, внесенные другими пользователями, становились видны только после того, как эти пользователи сохраняли файл, т.е. никакого realtime editing не было даже близко.
  • В таком режиме совместного редактирования очень много ценных функций и инструментов Excel становились недоступны. Например, нельзя было воспользоваться фильтром или сортировкой, построить сводную таблицу или диаграмму, раскрасить ячейки условным форматированием и т.д.

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

Совместное редактирование в Excel 2016

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

Получить ссылку

Разные ссылки

По полученной ссылке другие пользователи смогут войти в общий документ и редактировать его одновременно с вами. Вы в реальном времени (задержка 1-2 секунды по ощущениям) сможете видеть кто и в каком месте листа сейчас работает - активные ячейки других пользователей наглядно помечаются цветом и всплывающими подсказками:

Совместное редактирование в Excel 2016

Всех участников редактирования также можно увидеть на иконках в правом верхнем углу окна:

Иконки пользователей

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

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

Автосохранение: плюсы и минусы

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

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

Откат к старым версиям

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

Просмотр старых версий

С другой стороны, минусы у Автосохранения тоже есть:

  • Далеко не всегда нужно сохранять изменения, которые вы вносите в книгу. Представьте себе, например, что вы открыли файл, чтобы проверить какую-то идею или вероятный сценарий. Внесли изменения, посмотрели на пересчитанный результат и потом просто хотите закрыть файл без сохранения, оставив его в исходном состоянии - с включенным Автосохранением такое уже невозможно. В такой ситуации теперь нужно сразу после открытия файла не забыть отключить Автосохранение, иначе все внесенные "на пробу" изменения останутся в документе навсегда.
  • Автосохранение всегда по-умолчанию включено для всех файлов в облачных хранилищах и его статус ("вкл" или "выкл") запоминается внутри каждого файла. Если оно мешает, то его придется отключать для каждого файла отдельно. Глобального переключателя, включающего или выключающего Автосохранение сразу для всего Excel нет (точнее, придется лезть в реестр Windows, что не каждому под силу)
  • Из вкладки Файлпропали команды Сохранить и Сохранить как - теперь их заменяет Сохранить копию (Save a Copy) :

Пропали команды Сохранить и Сохранить как

Как отключить Автосохранение в Excel

Если вы не работаете в команде и новый режим совместного редактирования вам совершенно точно не нужен, а Автосохранение, наоборот, сильно мешает, то отключить его можно только путем редактирования реестра Windows.

Предупреждение : реестр - это, своего рода, база данных со всеми внутренними настройками Windows и установленных программ. Редактирование реестра - это как нейрохирургия: разрезал на сантиметр правее, чем нужно - и человек вместо выздоровления оглох (Excel перестал запускаться и т.п.). Если вы никогда раньше не редактировали реестр, то лучше обратитесь к знакомым айтишникам. Кроме того, большинству корпоративных пользователей таких прав не дают по определению, поэтому придется обращаться к системным администраторам.

Если, все же, решились сделать все сами, то жмем на клавиатуре одновременно клавиши Win (с флагом) и R, в открывшееся окно пишем regedit и жмем ОК:

редактор реестра

Затем на дереве в левой панели находим нужную ветку (папку) реестра:

HKEY_CURRENT_USER\SOFTWARE\Microsoft\Office\16.0\Excel\

Ветка реестра

Теперь щелкаем правой кнопкой мыши в правую панель окна и выбираем Создать (New) - Параметр типа DWORD:

Создаем параметр DWORD

Затем вводим имя параметра DontAutoSave и, открыв его двойным щелчком, его значение - 1:

Значение параметра

Все, можно выдохнуть, закрыть редактор реестра и, для надежности, перезагрузиться. Автосохранение должно отключиться для всего Excel.

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

save-sheets-as-files.jpg

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

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

Способ 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:

Читайте также: