Размер файла рабочей книги Excel увеличивается каждый раз, когда я создаю новую сводную таблицу и сохраняю файл - PullRequest
0 голосов
/ 30 апреля 2019

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

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

Вот как я удаляю старую сводную таблицу:

For Each pivot In reportSht.PivotTables
    pivot.TableRange2.Clear
Next pivot

Моя теория состоит в том, что некоторая часть стержня не удаляется, но я не могу судить о чем.

1 Ответ

2 голосов
/ 30 апреля 2019

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

ActiveWorkbook.Connections.Add2 "WorksheetConnection_" & inputDataArea, "", _
    "WORKSHEET;" & ActiveWorkbook.Path & "\[" & ActiveWorkbook.name & "]" _
    & inputSht.name, inputDataArea, 7, True, False

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

Я добавил этот фрагмент кода, чтобы также удалить все ненужные соединения после удаления сводной таблицы:

Dim connection As Object

For Each connection In ActiveWorkbook.Connections
    If connection.name <> "ThisWorkbookDataModel" Then connection.Delete
Next connection

Файл по-прежнему большой, но управляемый, и, самое главное, он больше не растет.

Спасибо Pᴇʜ за предложение удалить сводные кэши и за указание на то, что они удаляются вместе с соединениями.

...