Мой макрос увеличивает размер файла, хотя и удаляет информацию - PullRequest
0 голосов
/ 09 января 2019

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

  • Нет пустых строк, занимающих место.
  • В файлах результатов нет соединений с внешними источниками.
  • В любом файле (оригинале или результате) нет макроса.
  • Я видел очень похожий пост пару лет назад, но на этот вопрос не было удовлетворительного ответа. Хотя кто-то намекнул на команду сохранения, это я использую:
    ActiveWorkbook.SaveAs Имя файла: = "C: \ path \" & WR_Date & " Ежемесячный отчет " & Partner & ".xlsx"

( Размер файла Excel Macros )

Ниже приведено резюме шагов, выполняемых макросом.

  1. Макрос открывает «Мастер книгу»
  2. Удаляет все внешние соединения (OLAP)
  3. Удаляет вычисления в таблицах (копировать как простые значения)
  4. Удаляет листы таблицы сверки
  5. Сохраняет 4 файла (хозяин отдела, хозяин страны, хозяин территории, хозяин партнера).
  6. Использует эти основные файлы для удаления всех несущественных данных для заинтересованного лица.
  7. Обновите все сводные кэши (настройки всех сводок, чтобы в любом случае не сохранять память.
  8. Защищает все рабочие листы и рабочую книгу.
  9. Сохраняет файлы с правильными именами.

Согласно обсуждению в комментариях ниже, я вставляю свой макрос ниже. Функция «Заменить все» использовалась для удаления любой конфиденциальной информации, иногда результатом может быть запутанность, но этого должно быть достаточно для выявления проблемы.

Я почти уверен, что макрос вызывает это: если я повторяю шаги, выполняемые макросом, размер файлов будет намного меньше (5-15 Mo против 50-60 Mo).

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

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

ActiveWorkbook.RefreshAll
For Each pc In ActiveWorkbook.PivotCaches
    pc.Refresh
Next pc

Теперь я удалил «Обновить все» перед обновлением сводного кэша и сохранил около 20 Мо для файла Отдела и Страны. Это все еще не вполне удовлетворительно, поскольку файлы деления и страны по размеру примерно соответствуют их родительскому или большему размеру, но эти отчеты необходимо опубликовать сегодня.

Я буду продолжать искать, но обязательно постараюсь представить вам полное разрешение к следующему месяцу!

1 Ответ

0 голосов
/ 09 января 2019

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

  • Файлы «TestSize1» содержат только значения данных
  • Файлы «TestSize2» содержат только функции Excel
  • «TestSize3» файлы содержат только форматирование

Проводник Windows - Тест

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

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

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

Это работало для меня, время от времени, для восстановления больших .csv файлов. Я надеюсь, что это работает для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...