Что делает макрос: Если вы все еще используете Excel 2003, вы можете сталкиваться с несовместимостью Сводных таблиц с более поздними версиями. Например, в более поздних версиях Excel в сводных таблицах может быть более 16384 столбцов и более 1000000 уникальных элементов данных. Excel 2003 может иметь только 256 столбцов и 32500 уникальных элементов данных. Для решения проблем с совместимостью, Microsoft инициировала концепцию режима совместимости.
Если вы не в режиме совместимости (т.е. вы работаете с XLSX или XLSM файлами), то при создании сводной таблицы объекты, открытые в Excel 2003, уничтожаются.
Чтобы избежать этого фиаско вручную, пользователи Excel 2007 и 2010 должны пройти через эти шаги:
- Создайте пустую книгу.
- Сохраните файл как файл XLS.
- Закройте файл.
- Откройте его снова.
- Начало создания сводной таблицы.
В качестве альтернативы можно использовать макрос, который автоматически запускает сводную таблицу в таблице в версии 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
Как использовать
Для реализации этого макроса, вы можете скопировать и вставить его в стандартный модуль:
- Активируйте редактор Visual Basic, нажав ALT + F11.
- Щелкните правой кнопкой мыши имя проекта / рабочей книги в окне проекта.
- Выберите Insert➜Module.
- Введите или вставьте код.