Sub CreatePivotTable()
Dim wsNewSheet As Worksheet ' Objektová proměnná pro nový list
Dim pvtCache As PivotCache ' Objektová proměnná pro PivotCache
Dim pvtTable As PivotTable ' Objektová proměnná pro PivotTable
Dim strFirstCell As String ' Proměnná pro první buňku PivotTable
Dim strDataSource As String ' Proměnná pro odkaz na zdrojová data
strDataSource = "TestingTable!" & ThisWorkbook.Sheets("TestingTable").Range("A1").CurrentRegion.Address
Debug.Print strDataSource
Set wsNewSheet = Sheets.Add ' Přidání nového listu
strFirstCell = wsNewSheet.Name & "!" & wsNewSheet.Range("A3").Address(ReferenceStyle:=xlR1C1)
' Definování PivotCache, nad kterým vytváříme PivotTable (PT)
Set pvtCache = ThisWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:=strDataSource)
Set pvtTable = pvtCache.CreatePivotTable(TableDestination:=strFirstCell, TableName:="PivotTable1")
' Volání procedury, která vytvoří v PT souhrn dat
Call AddingPivotFields
' Uklizení v proměnných
Set wsNewSheet = Nothing
Set pvtCache = Nothing
Set pvtTable = Nothing
End Sub
Sub AddingPivotFields()
Dim pvtTable As PivotTable ' Objektová proměnná pro PivotTable (PT)
Set pvtTable = ActiveSheet.PivotTables("PivotTable1") ' Uložení PT do proměnné
pvtTable.ManualUpdate = True ' Pro zrychlení vypneme automatické přepočty
With pvtTable
.PivotFields("COUNTRY").Orientation = xlPageField ' Vložení pole COUNTRY do filtru sestavy
.PivotFields("BRAND CATEGORY").Orientation = xlColumnField ' Vložení pole BRAND CATEGORY do sloupcových polí
.PivotFields("CITY").Orientation = xlRowField ' Vložení pole CITY do řádkových polí
.PivotFields("CITY").Position = 1 ' Kdyby v řádkových polích bylo více polí, tak určujeme pozici
.PivotFields("ORDERED QTY (PAL)").Orientation = xlDataField ' Definice toho, jaké pole bude v datové části PT
.PivotFields("ORDERED QTY (PAL)").NumberFormat = "#,##0" ' Formát pole
End With
pvtTable.ManualUpdate = False
End Sub
Sub DeletePivotTable()
ActiveSheet.PivotTables("PivotTable1").TableRange2.Clear
End Sub