Перейдите в редактор Visual Basic и в окне проектов найдите текущую книгу. Откройте папку Modules и затем Module1 - вы увидите код макроса в виде процедуры МояСводнаяТаблица (если такое имя вы дали своему макросу). Полный код этой процедуры приведен в листинге 19.1.
8: With ActiveSheet.PivotTables("СводнаяТаблица1"). _
PivotFields("Год")
9: .Orientation = xlPageField
10: .Position = 1
11: End With
12: With ActiveSheet.PivotTables("СводнаяТаблица1"). _
PivotFields("Район")
13: .Orientation = xlRowField
14: .Position = 1
15: End With
16: With ActiveSheet.PivotTables("СводнаяТаблица1"). _
PivotFields("Категория товара")
17: .Orientation = xlColumnField
18: .Position = 1
19: End With
20: With ActiveSheet.PivotTables("СводнаяТаблица1"]. _
PivotFields("Объем продаж")
21: .Orientation = xlDataField
22: .Position = 1
23: End With
24:End Sub
Первый оператор в этой процедуре выполняет метод Add (Добавить) применительно к коллекции PivotCaches (Основные кэши). На самом деле в этом операторе выполняются два метода. В дополнение к метолу Add, создающему элемент коллекции PivotCaches, исполняется еще метод CreatePivotTable (Создать сводную таблицу), название которого говорит само за себя:
Обратите внимание, что в методе CreatePivotTable аргумент TableDestination принимает значение пустой строки - для Excel это является указанием создать сводную таблицу на новом рабочем листе. После создания нового рабочего листа и сводной таблицы задается ряд свойств:
Остальные операторы процедуры назначают областям сводной таблицы соответствующие поля данных.
With ActiveSheet.PivotTables("СводнаяТаблица1").PivotFields("Год"]
.Orientation = xlPageField
.Position = 1
End With
With ActiveSheet.PivotTables("СводнаяТаблица1").PivotFields("Район")
.Orientation = xlRowField
.Position = 1
End With
With ActiveSheet.PivotTables("СводнаяТаблица1"). _
PivotFields("Категория товара")
.Orientation = xlColumnField
.Position = 1
End With
With ActiveSheet.PivotTables("СводнаяТаблица1"). _
PivotFields"Объем продаж")
.Orientation = xlDataField
.Position = 1
End With
Если сейчас вы попытаетесь выполнить макрос еще раз, то получите сообщение об ошибке, так как сводная таблица с тем именем, которое указано в аргументе TableName (Имя таблицы), уже создана. Чтобы сделать процедуру более гибкой, внесите в ее код изменения, показанные в листинге 19.2 (измененные и новые операторы выделены полужирным шрифтом).
Теперь можно не беспокоиться об имени создаваемой сводной таблицы. Процедура будет выполняться столько раз, сколько необходимо.
Резюме
В этом часе вы познакомились со сводными таблицами, предназначенными для работы с большими массивами данных. Продолжая изучение языка VBA, мы сначала записали макрос, создающий сводные таблицы, а затем модифицировали его код.