Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Per VBA Pivot Datenquelle auf andere Piv.umstellen

Per VBA Pivot Datenquelle auf andere Piv.umstellen
07.11.2013 14:49:13
Georg
Hallo werte Mitstreiter,
meine VBA Kenntnisse sind bescheiden und eingerostet, aber offensichtlich hält sich hier im Büro noch hartnäckig die Meinung, dass ich immer noch den schwarzen Künsten fröhne.
Ich wurde gebeten ein kleines VBA Makro zu schreiben, welches in einer Excel Datei, die mehrere Pivot-Tabellen enthält, die erste Pivot Tabelle zur Datenquelle aller anderen Pivot Tabellen macht. Genauso, wie man das bei Assistenten via: "Where is the data that you want to analize? - Another PivotTable report or PivotChart report" macht.
ich bin mir sicher, da gibts eine einfache Lösung, aber ausser Fehlermeldungen habe ich nichts zusammengebracht. Sogar, wenn ich das händisch mit eingeschaltenem Macrorekorder mache und dann einfach abspiele gibts einen Fehler.
Schön wärs, wenn die lösung 2003/2007/2010 kompatibel ist.
Ich bitte inständigst um Erleuchtung
Liebe Grüsse aus Wien
Georg

Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Per VBA Pivot Datenquelle auf andere Piv.umstellen
07.11.2013 15:30:17
fcs
Hallo Georg,
diesen Menüpunkt gibt es in dieser Form im Assisten für Pivots unter Excel 2010 nicht mehr.
Wenn alle Pivottabellen die gleiche Datenquelle benutzen sollen, dann kann man das mit folgendem Makro umsetzen - zumindest dann, wenn auf eine Exceltabelle als Quelle zugegriffen wird.
mfg
Franz
Sub Pivottables_Same_Cache()
Dim objCache As PivotCache
Dim pvMasterPivot As PivotTable, pvSlavePivot As PivotTable
Dim wks As Worksheet, wksMasterPivot As Worksheet
Set wksMasterPivot = ActiveWorkbook.Worksheets("Tabelle3")       'Blattname anpassen
Set pvMasterPivot = wksMasterPivot.PivotTables(1)   'ggf. Nr. anpassen oder durch _
Pivottable-Name in Anführungszeichen ersetzen.
Set objCache = pvMasterPivot.PivotCache
For Each wks In ActiveWorkbook.Worksheets
For Each pvSlavePivot In wks.PivotTables
If wks.Name  wksMasterPivot.Name _
Or (wks.Name = wksMasterPivot.Name _
And pvSlavePivot.Name  pvMasterPivot.Name) Then
pvSlavePivot.PivotCache.SourceData = objCache.SourceData
End If
Next
Next
End Sub

Anzeige
AW: Per VBA Pivot Datenquelle auf andere Piv.umstellen
07.11.2013 15:54:17
Georg
Lieber Franz!
das schaut ziemlich gut aus!
'...zumindest dann, wenn auf eine Exceltabelle als Quelle zugegriffen wird'
was muss ich ändern, wenn auf eine access datenbank zugegriffen wird?
Liebe Grüsse
Georg

AW: Per VBA Pivot Datenquelle auf andere Piv.umstellen
07.11.2013 17:10:49
fcs
Hallo Georg,
du musst nur eine Zeile anpassen. Zumindest hat es mit einer simplen Accestabelle funktioniert.
mfg
Franz
    'Datenquelle ist eine Exeltabelle
'pvSlavePivot.PivotCache.SourceData = objCache.SourceData
'Datenquelle ist Tabelle in einer Accessdatenbank oder Exceltabelle
pvSlavePivot.ChangePivotCache (wksMasterPivot.Name & "!" & pvMasterPivot.Name)

Anzeige
AW: Per VBA Pivot Datenquelle auf andere Piv.umstellen
08.11.2013 11:43:49
Georg
Lieber Franz!
Erstmal: Pivot Steuerung über VBA ist garstig! Und vielen Dank, ohne deine Hilfe hätt ich das niemals rausgefunden ;)
Wenn die Art der Datenquelle gleich bleibt funktioniert der Code, das habe ich mit excel als Datenquelle getestet. Wenn sich jedoch in der Arbeitsmappe einige Pivots auf eine Access Datenquelle (die die komplett gleiche Struktur, wie die Excel Source hat) beziehen, dann steht zwar in der Sourcedata der betreffenden pivot die Excel Source richtig drin, geh ich dann manuell auf die Pivot und klicke update, dann versucht er auf die Access Datenquelle zuzugreifen. Die hab ich ihm zu testzwecken weggemoved, damit ich weiss, wohin er greifen will.
Irgendwelche Ideen dazu?

Anzeige
AW: Per VBA Pivot Datenquelle auf andere Piv.umstellen
07.11.2013 16:25:26
Georg
Lieber Franz,
noch etwas: ich habe, nachdem ich versucht habe den code zu verstehen, meine pivot tabellen testweise auf eine externe excel datei als datenbasis gesetzt und sowohl bei excel 2003 alsauch bei 2010 wirft es das Makro beim Updateversuch der 2. pivot, die sich im nächsten sheet befindet mit einem 1004er Fehler.
in den variablen vom workbook ubers sheet bis zur sourcedata steht das richtige drin. Der Fehler passiert hier: pvSlavePivot.PivotCache.SourceData = objCache.SourceData
Was hab ich da falsch gemacht?
Liebe Grüsse
Georg

Anzeige
AW: Per VBA Pivot Datenquelle auf andere Piv.umstellen
07.11.2013 17:13:40
fcs
Hallo Georg,
schau mal in meine vorherige Antwort, die scheint für verschiedene Quellen (intern und extern) zu funktionieren.
Pivottabelle sind unter VBA wegen ihrer vielfältigen Möglichkeiten nicht so ganz einfach zu händeln.
mfg
Franz
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

VBA zur Anpassung der Pivot-Datenquelle nutzen


Schritt-für-Schritt-Anleitung

  1. Öffne deine Excel-Datei mit den Pivot-Tabellen.

  2. Öffne den VBA-Editor (drücke ALT + F11).

  3. Füge ein neues Modul hinzu:

    • Rechtsklick auf "VBAProject (deineDatei.xlsx)" > Einfügen > Modul.
  4. Kopiere den folgenden Code in das Modul:

    Sub Pivottables_Same_Cache()
        Dim objCache As PivotCache
        Dim pvMasterPivot As PivotTable, pvSlavePivot As PivotTable
        Dim wks As Worksheet, wksMasterPivot As Worksheet
        Set wksMasterPivot = ActiveWorkbook.Worksheets("Tabelle3") ' Blattname anpassen
        Set pvMasterPivot = wksMasterPivot.PivotTables(1) ' ggf. Nr. anpassen
        Set objCache = pvMasterPivot.PivotCache
    
        For Each wks In ActiveWorkbook.Worksheets
            For Each pvSlavePivot In wks.PivotTables
                If wks.Name <> wksMasterPivot.Name Or (wks.Name = wksMasterPivot.Name And pvSlavePivot.Name <> pvMasterPivot.Name) Then
                    pvSlavePivot.PivotCache.SourceData = objCache.SourceData
                End If
            Next
        Next
    End Sub
  5. Starte das Makro, um die Datenquelle der Pivot-Tabellen zu ändern.


Häufige Fehler und Lösungen

  • Fehler 1004 beim Update:

    • Stelle sicher, dass die Datenquelle richtig zugeordnet ist. Überprüfe die SourceData und dass die Pivot-Tabellen die gleiche Struktur haben.
  • Pivot-Datenquelle ändern geht nicht:

    • Es könnte an den Einstellungen der Pivot-Tabelle liegen. Achte darauf, dass alle Pivot-Tabellen auf die gleiche Datenquelle zeigen.
  • Makro funktioniert nicht in Excel 2010:

    • Der Code könnte für verschiedene Excel-Versionen unterschiedlich sein. Überprüfe die Excel-Version und passe den Code gegebenenfalls an.

Alternative Methoden

  • Manuelle Anpassung:

    • Du kannst die Datenquelle jeder Pivot-Tabelle manuell ändern, indem du mit der rechten Maustaste auf die Tabelle klickst, "PivotTable-Optionen" wählst und dann die Datenquelle unter "Daten" anpasst.
  • Pivot-Chart kopieren und Datenquelle ändern:

    • Erstelle zuerst das Pivot-Chart und ändere dann die Datenquelle über die Diagrammwerkzeuge.

Praktische Beispiele

  • Datenquelle von Excel zu Access ändern:

    pvSlavePivot.ChangePivotCache (wksMasterPivot.Name & "!" & pvMasterPivot.Name)

    Dieser Code ändert die Datenquelle einer Pivot-Tabelle, wenn die Datenquelle eine Access-Datenbank ist.

  • Verwendung von mehreren Pivot-Tabellen aus einer Quelle:

    • Stelle sicher, dass alle Pivot-Tabellen dieselbe PivotCache-Objekt verwenden, um Redundanz zu vermeiden.

Tipps für Profis

  • Verwende PivotCache effizient: Wenn du mehrere Pivot-Tabellen aus einer Quelle hast, nutze den PivotCache, um die Performance zu verbessern.

  • Automatisiere die Datenaktualisierung: Implementiere ein Makro, das alle Pivot-Tabellen aktualisiert, wenn sich die Datenquelle ändert.

  • Teste deinen Code Schritt für Schritt: Verwende den Debugger in VBA, um Fehler zu lokalisieren und den Code effizienter zu gestalten.


FAQ: Häufige Fragen

1. Wie kann ich die Datenquelle einer Pivot-Tabelle in Excel ändern?
Du kannst die Datenquelle ändern, indem du mit der rechten Maustaste auf die Pivot-Tabelle klickst und "Datenquelle ändern" wählst.

2. Funktioniert das Makro in Excel 2003, 2007 und 2010?
Ja, der bereitgestellte VBA-Code ist mit Excel 2003, 2007 und 2010 kompatibel, solange die Struktur der Pivot-Tabellen gleich bleibt.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige