Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1536to1540
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Pivottabelle über VBA erstellen
26.01.2017 08:59:11
Thomas
Guten Morgen zusammen,
ich habe ein Problem beim Erstellen einer Pivottabelle.
Mein Workbook besteht aus den Tabellen "Januar Grafik" und "Januar Daten".
Die Pivottabelle soll in der Tabelle "Januar Grafik" erstellt werden - Datenquelle soll "Januar Daten" sein.
Wenn ich über den Makrorecorder das Erstellen der Pivottabelle aufzeichne, kommt folgender Code _
heraus:

Sheets("Januar Grafik").Select
Range("A1").Select
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
"Januar Daten!R1C2:R1048576C3", Version:=xlPivotTableVersion15). _
CreatePivotTable TableDestination:="Januar Grafik!R1C1", TableName:= _
"PivotTable2", DefaultVersion:=xlPivotTableVersion15
Sheets("Januar Grafik").Select
Cells(1, 1).Select
ActiveWorkbook.ShowPivotTableFieldList = True
With ActiveSheet.PivotTables("PivotTable2").PivotFields("RT")
.Orientation = xlRowField
.Position = 1
End With
ActiveSheet.PivotTables("PivotTable2").AddDataField ActiveSheet.PivotTables( _
"PivotTable2").PivotFields("PNR"), "Anzahl von PNR", xlCount
With ActiveSheet.PivotTables("PivotTable2").PivotFields("RT")
.PivotItems("  ").Visible = False
.PivotItems("(blank)").Visible = False
End With
ActiveSheet.Shapes.AddChart2(201, xlColumnClustered).Select
ActiveChart.SetSourceData Source:=Range("'Januar Grafik'!$A$1:$B$6")
ActiveChart.FullSeriesCollection(1).Select
ActiveChart.FullSeriesCollection(1).ApplyDataLabels

Beim anschließenden Ausführen des Codes bleibt er allerdings in der Zeile

ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
"Januar Daten!R1C2:R1048576C3", Version:=xlPivotTableVersion15). _
CreatePivotTable TableDestination:="Januar Grafik!R1C1", TableName:= _
"PivotTable2", DefaultVersion:=xlPivotTableVersion15

stehen. Auch wenn ich die Tabelle lösche und wieder Neuerstelle.
Fehlermeldung:

Laufzeitfehler '5' Ungültiger Prozeduraufruf oder ungültiges Argument

Macht es einen Unterschied, ob hinter SourceData=

Januar Grafik!R1C1"
oder

"'Januar Grafik'!$A$1"

steht?
Vielen Dank schonmal für Eure Antworten!
Gruß Thomas

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Pivottabelle über VBA erstellen
26.01.2017 19:42:55
fcs
Hallo Thomas,
Blattnamen, die Leerzeichen oder andere Sonderzeichen enthalten, müssen bei Formeln immer in Hochkommata eingefast werden.
Ich hab dein Makro mal mit zusätzlichen Objektvariablen versehen. Das macht das Makro etwas übersichtlicher.
Leider ist der Makrorecorder manchmal etwas fehlerhaft. Die erforderliche Schreibweise für die Zelladressen (A1 oder R1C1) kann im Code für Makros für Pivot-Tabellen variieren.
Ich hab dein Makro unter Excel 2010 getestet. Da funktioniert einiges nicht wegen neuerer Funktionen.
Ich hab das Makro zum Erzeugen des Pivotberichts in eine etwas allgemeinere Form umgestellt.
Vor dem Ausführen des Makros musst einen im Blatt "Januar Grafik" schon vorhandenen Pivot-Bericht löschen.
LG
Franz
Sub AATest()
Dim wksMonat As Worksheet, wksGrafik As Worksheet
Dim pvTab As PivotTable
Set wksGrafik = Worksheets("Januar Grafik")
Set wksMonat = Worksheets("Januar Daten")
wksGrafik.Select
Range("A1").Select
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
"'" & wksMonat.Name & "'!R1C2:R1048576C3"). _
CreatePivotTable TableDestination:="'" & wksGrafik.Name & "'!R1C1"
Set pvTab = wksGrafik.PivotTables(1)
ActiveWorkbook.ShowPivotTableFieldList = True
With pvTab.PivotFields("RT")
.Orientation = xlRowField
.Position = 1
End With
pvTab.AddDataField pvTab.PivotFields("PNR"), "Anzahl von PNR", xlCount
With pvTab.PivotFields("RT")
.PivotItems("  ").Visible = False
.PivotItems("(blank)").Visible = False
End With
'Nachfolgende Zeilen zum Erstellen eines Diagramms funktionieren unter Excel 2010 nicht
ActiveSheet.Shapes.AddChart2(201, xlColumnClustered).Select
ActiveChart.SetSourceData Source:=Range("'Januar Grafik'!$A$1:$B$6")
ActiveChart.FullSeriesCollection(1).Select
ActiveChart.FullSeriesCollection(1).ApplyDataLabels
End Sub

Anzeige

82 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige