На VBA никогда не писал, но возникла задача, надо на основании таблицы excel создавать pivot table. Делать это каждый раз руками замучился. Решил последовательность своих действий записать в макрос (View/Record macros). Макрос успешно записался. НО ниже его код. Но везде проставлены константы, которые видимо не позволяют мне использовать этот макрос повторно. Подскажите, как их заменить на переменные, чтобы каждый раз когда я запускаю макрос - у меня создавался в отдельном листе данной книги pivot table на основании таблицы, в другом листе, которая обновляется автоматически.
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
Sub Macro3()
'
' Macro3 Macro
'
'
Sheets.Add
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
"Âõîäÿùèå_îò÷åòíûé ïåðèîä!R1C1:R736C22", Version:=xlPivotTableVersion1). _
CreatePivotTable TableDestination:="Sheet1!R3C1", TableName:="PivotTable8" _
, DefaultVersion:=xlPivotTableVersion1 /* Проблема возникает здесь */
Sheets("Sheet11").Select
Cells(3, 1).Select
With ActiveSheet.PivotTables("PivotTable8").PivotFields("Calls")
.Orientation = xlPageField
.Position = 1
End With
ActiveSheet.PivotTables("PivotTable8").AddDataField ActiveSheet.PivotTables( _
"PivotTable8").PivotFields("Calls2"), "Count of Calls2", xlCount
With ActiveSheet.PivotTables("PivotTable8").PivotFields("Ãîä")
.Orientation = xlPageField
.Position = 1
End With
With ActiveSheet.PivotTables("PivotTable8").PivotFields("Ìåñÿö")
.Orientation = xlPageField
.Position = 1
End With
With ActiveSheet.PivotTables("PivotTable8").PivotFields("Ïðåïàðàò")
.Orientation = xlPageField
.Position = 1
End With
With ActiveSheet.PivotTables("PivotTable8").PivotFields("Êàòåãîðèÿ àáîíåíòà")
.Orientation = xlPageField
.Position = 1
End With
With ActiveSheet.PivotTables("PivotTable8").PivotFields("Äèàãíîç")
.Orientation = xlPageField
.Position = 1
End With
With ActiveSheet.PivotTables("PivotTable8").PivotFields("Ïîë")
.Orientation = xlPageField
.Position = 1
End With
With ActiveSheet.PivotTables("PivotTable8").PivotFields("Âîçðàñò")
.Orientation = xlPageField
.Position = 1
End With
With ActiveSheet.PivotTables("PivotTable8").PivotFields("Òèï çâîíêà")
.Orientation = xlPageField
.Position = 1
End With
With ActiveSheet.PivotTables("PivotTable8").PivotFields("Òèï âîïðîñà")
.Orientation = xlPageField
.Position = 1
End With
With ActiveSheet.PivotTables("PivotTable8").PivotFields("Òèï ÍËÐ")
.Orientation = xlPageField
.Position = 1
End With
With ActiveSheet.PivotTables("PivotTable8").PivotFields("KIT 1")
.Orientation = xlPageField
.Position = 1
End With
With ActiveSheet.PivotTables("PivotTable8").PivotFields("KIT 2")
.Orientation = xlPageField
.Position = 1
End With
With ActiveSheet.PivotTables("PivotTable8").PivotFields("KIT 3")
.Orientation = xlPageField
.Position = 1
End With
ActiveSheet.PivotTables("PivotTable8").AddDataField ActiveSheet.PivotTables( _
"PivotTable8").PivotFields("Êîëè÷åñòâî çàêàçàíûõ KIT-îâ"), _
"Sum of Êîëè÷åñòâî çàêàçàíûõ KIT-îâ", xlSum
With ActiveSheet.PivotTables("PivotTable8").DataPivotField
.Orientation = xlColumnField
.Position = 1
End With
With ActiveSheet.PivotTables("PivotTable8").PivotFields("Ãîðîä èç Îïòèìû")
.Orientation = xlPageField
.Position = 1
End With
With ActiveSheet.PivotTables("PivotTable8").PivotFields("Ãîðîä ïî Òàáëèöå 1")
.Orientation = xlRowField
.Position = 1
End With
With ActiveSheet.PivotTables("PivotTable8").PivotFields("Ðåãèîí")
.Orientation = xlPageField
.Position = 1
End With
With ActiveSheet.PivotTables("PivotTable8").PivotFields("Äèñòðèêò ìåíåäæåð")
.Orientation = xlPageField
.Position = 1
End With
With ActiveSheet.PivotTables("PivotTable8").PivotFields("Ðåãèîíàëüíûé ìåíåäæåð" _
)
.Orientation = xlPageField
.Position = 1
End With
With ActiveSheet.PivotTables("PivotTable8").PivotFields("Èìÿ ïàöèåíòà")
.Orientation = xlPageField
.Position = 1
End With
Range("B24").Select
ActiveSheet.PivotTables("PivotTable8").PivotFields("Ãîðîä ïî Òàáëèöå 1"). _
AutoSort xlDescending, "Count of Calls2", ActiveSheet.PivotTables("PivotTable8" _
).PivotColumnAxis.PivotLines(1), 1
Sheets("Âõîäÿùèå_îò÷åòíûé ïåðèîä").Select
End Sub