Excel долго сохраняет файл

Обновлено: 07.07.2024

Office 365 ProPlus переименован в Майкрософт 365 корпоративные приложения. Для получения дополнительной информации об этом изменении прочитайте этот блог.

Симптомы

Предположим, что вы используете файловую систему шифрования (EFS), чтобы защитить временную папку "Файлы Интернета". Вы сохраняете Microsoft Office на удаленный сервер, чем может поддерживать шифрование, но сервер не настроен для удаленного шифрования. В этой ситуации для сохранения документов требуется больше времени, чем ожидалось.

Причина

При сохранения документов Office приложения (Excel, Word и PowerPoint) создают временный файл в защищенных подмостках с именами "Content.MSO" и "Content.Word" в папке Временные файлы Интернета. Если подмостки шифруются с помощью EFS, то к файлу, который затем копируется на сервер, будет применен и зашифрованный атрибут. Если сервер поддерживает шифрование, но не настроен для этого, происходит несколько попыток сохранить зашифрованный файл, что замедляет процесс сохранения.

Решение

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

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

Удалите шифрование из подмастерей "Content.MSO" и "Content.Word" в папке Временные файлы Интернета.

Отключить поддержку шифрования EFS на сервере, изменив следующую запись реестра:

  • PATH: HKLM\SYSTEM\CurrentControlSet\Control\FileSystemValue
  • DWORD: NtfsDisableEncryption
  • ЗНАЧЕНИЕ: 1

Примечание Значение 0 означает, что шифрование включено, а значение 1 означает отключение шифрования.

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

Сохраните файл локально, затем перетащите файл в нужное расположение сети.

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

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

1. Уменьшаем размер используемого диапазона листа

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

Чтобы проверить, есть ли на листе лишние пустые столбцы и строки нужно нажать сочетание клавиш «Ctrl+End» . Вы попадете в последнюю ячейку, которую использует программа. Если она явно за пределами ваших данных, то лишние строки и столбцы стоит удалить. Для этого в столбце А встаем в ячейку ниже последней нужной нам строки и нажимаем «Ctrl+Shift+End» .

Выделятся все лишние строки. Удаляем их. То же самое повторяем для столбцов. Если их много – файл может зависнуть. В таком случае проще использовать небольшой макрос. Нажмите Alt+F11 или кнопку Visual Basic на вкладке Разработчик (как ее активировать - показывали здесь ), вставьте новый модуль через меню Insert - Module и скопируйте туда код макроса:

Sub УдалениеЛишнихЯчеек()

For Each Sht In ActiveWorkbook.Worksheets

Чтобы запустить его - на той же вкладке (1) нажмите кнопку "Макросы" (2), выберите в списке "УдалениеЛишнихЯчеек" (3) и нажмите кнопку "Выполнить" (4).

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

2. Пересохраняем файл в другом формате

Если кто-то еще пользуется файлами в старом формате XLS, но уже сидит на более новом ПО (Excel 2007 и новее), то есть смысл пересохранить файл в один из новых форматов: XLSX, XLSM, XLSB. Они более современные, лучше оптимизированы, весят меньше и работают быстрее. Самый компактный из них – XSLB. При сохранении в этом формате размер файла существенно уменьшится (даже если пересохранить в него "новый" XLSX).

3. Удаляем лишние объекты из книги

Часто при копировании в файл данных из сторонних программ (например, 1С) вместе с ними копируются лишние объекты (фигуры, картинки и прочее), которые не всегда можно сразу заметить на листе. Чтобы проверить, есть ли в файле лишние объекты, нужно найти на ленте команду "Найти и выделить" (1) и выбрать "Область выделения" (2). Откроется список объектов листа (3).

Удалить все объекты можно выделив их и нажав клавишу Delete . Чтобы выделить все объекты снова используем команду "Найти и выделить" (1), выбираем пункт "Выделить группу ячеек" (2) и в открывшемся окне выбираем "Объекты" (3).

Если объектов много, то имеет смысл удалять их простым макросом. Код - ниже. Его нужно запустить поочередно на каждом листе.

Sub УдаляемОбъекты()

For each shp in ActiveSheet.Shapes

4. Уменьшаем размер сводных таблиц

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

Для отключения этой опции выберите нужную сводную таблицу, перейдите в ее Параметры (правая кнопка мыши - Параметры сводной таблицы) и на вкладке Данные (1) снимите галочку с пункта "Сохранять исходные данные вместе с файлом" (2).

5. Заменяем формулы на значения

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

6. Удаляем лишнее форматирование

Красивые документы нравятся всем, но чем более пёстрый лист у Вас получился, тем медленнее будет работать файл. А условное форматирование сказывается на быстродействии еще больше, так как основано на формулах и постоянно пересчитывается. Рекомендуем удалять все лишние форматы, оставляя только то, что действительно нужно (как очистить форматы - смотри здесь ). Минимализм сейчас в моде.

Чтобы удалить лишние правила условного форматирования выбираем на вкладке "Главная" инструмент "Условное форматирование", кнопка "Управление правилами". В открывшемся диспетчере выбираем весь лист (1), выделяем лишнее правило (2) и удаляем его (3). Повторяем, пока не удалим всё лишнее.

Те, кто работает с большими данными в excel, порой сталкиваются с тем, что файл начинает подвисать, расчет формул происходит не мгновенно, а в течение нескольких секунд, а то и доходит до десятков секунд.

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

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

1. Использование старых форматов книг excel . В последних версиях программы (начиная с 2007) появились новые форматы для файлов excel, которые значительно легче, чем предыдущие (xlsx, xlsm, xlsb) т.к. используют новый подход к сжатию файлов.

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

2. Форматирование сильно утяжеляет файл . Если в своем excel вы используете условное форматирование, особенно цветное - оно влияет на скорость работы файла и его вес.

По возможности старайтесь минимизировать количество такого форматирования в excel.

3. Диапазон используемых данных при пересчете значений . Если вы, например, ранее использовали диапазон ячеек 100*100, потом удалили значения в этих ячейках и стали использовать диапазон 5*5, то скорее всего excel при работе с вашими данными и при их сохранении в памяти держит бОльший диапазон, что сильно влияет на его вес.

Для того, чтобы точно от этого избавиться, выделите все строки под вашими рабочими данными (например, с помощью сочетания клавиш Ctrl+Shift+стрелка вниз) и удалите эти строки (на ленте во вкладке Главная -> Удалить -> Удалить строки с листа). Тоже самое проделайте и со столбцами.

4. Сводные таблицы . Количество сводных таблица напрямую влияет на вес и быстродействие файла. Чем их больше - тем сложнее с ним работать.

Power Pivot может сильно помочь в этом случае, но придется потратить время на его освоение.

5. Количество графических элементов, диаграмм и примечаний также может повлиять на вес файла. Я видела файлы, в которых десятки, а то и несколько сотен диаграмм. Работать с таким файлом очень сложно.

Если наличие этих элементов не принципиально - избавьтесь от них.

Еще один простой совет - не превращайте excel в инструмент создания дэшбордов и сложных визуализаций. Попробуйте для этого использовать Power Point, Power BI или любую другую программу для визуализации данных.

6. Макросы и еще раз макросы способны из вашего excel сделать очень медленноработающий файл. Особенно громоздкие. При отправке отчета вы можете пересохранить файл в формате, не поддерживающем макросы, и тогда он станет значительно легче.

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

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

✔ Ищите ответы на свои вопросы в статье Фишки excel - подборка статей . Там я перечислила все свои статьи по разбору работы функций excel.

✔ Вот здесь есть подборка видео о том, как строить необычные диаграммы - Фишки Excel - подборка видеороликов .

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