Как создать обратную совместимость сводной таблицы

Что делает макрос: Если вы все еще используете Excel 2003, вы можете сталкиваться с несовместимостью Сводных таблиц с более поздними версиями. Например, в более поздних версиях Excel в сводных таблицах может быть более 16384 столбцов и более 1000000 уникальных элементов данных. Excel 2003 может иметь только 256 столбцов и 32500 уникальных элементов данных. Для решения проблем с совместимостью, Microsoft инициировала концепцию режима совместимости.
Если вы не в режиме совместимости (т.е. вы работаете с XLSX или XLSM файлами), то при создании сводной таблицы объекты, открытые в Excel 2003, уничтожаются.
Чтобы избежать этого фиаско вручную, пользователи Excel 2007 и 2010 должны пройти через эти шаги:

  1. Создайте пустую книгу.
  2. Сохраните файл как файл XLS.
  3. Закройте файл.
  4. Откройте его снова.
  5. Начало создания сводной таблицы.

В качестве альтернативы можно использовать макрос, который автоматически запускает сводную таблицу в таблице в версии Excel 2003 — даже если вы не в режиме совместимости!

Как макрос работает

Если записать макрос при создании сводной таблицы в Excel 2007 или Excel 2010, записи макросов генерируют код, который имеет несколько аргументов. Одним из аргументов является свойство Version. Как следует из названия, свойство Version определяет версию Excel сводной таблицы, в которой она создана. Дело в том, что вы можете изменить версию в коде, чтобы заставить Excel создать сводную таблицу, которая будет работать с Excel 2003.
Вот список различных версий:

  • xlPivotTableVersion2000 — Excel 2000
  • xlPivotTableVersion10 — Excel 2002
  • xlPivotTableVersion11 — Excel 2003
  • xlPivotTableVersion12 — Excel 2007
  • xlPivotTableVersion14 — Excel 201

Вот пример макроса, который создает сводную таблицу с помощью Range («A3: N86») на Лист1 в качестве исходных данных.
Обратите внимание, что мы изменили свойства Version и DefaultVersion к xlPivotTable Version11. Это гарантирует, что сводная таблица будет работать в Excel 2003.

Код макроса

Sub ObratnayaSovmestimostSvodnoiTablici()
Dim SourceRange As Range
Set SourceRange = Sheets("Лист1").Range("A3:N86")
ActiveWorkbook.PivotCaches.Create( _
SourceType:=xlDatabase, _
SourceData:=SourceRange, _
Version:=xlPivotTableVersion11).CreatePivotTable _
TableDestination:="", _
TableName:="", _
DefaultVersion:=xlPivotTableVersion11
End Sub

Как использовать

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

  1. Активируйте редактор Visual Basic, нажав ALT + F11.
  2. Щелкните правой кнопкой мыши имя проекта / рабочей книги в окне проекта.
  3. Выберите Insert➜Module.
  4. Введите или вставьте код.
Оцените статью
Добавить комментарий