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

Pivotdatenquelle per VBA ändern

Forumthread: Pivotdatenquelle per VBA ändern

Pivotdatenquelle per VBA ändern
07.05.2008 10:47:00
Lonni
Hallo Cracks,
könnt Ihr mir sagen wie ich folgendes Problem in VBA lösen kann?
Situation ist die, dass eine Pivottabelle in Excel auf eine externe Datenquelle zugreift. Mit welchem Befehl kann ich die Datenquelle ändern?
Bsp: Manuell kann ich im Pivotassistent in Excel selbst in Schritt 2 (von 3) auf den Button "Daten importieren" gehen. Dann bei Befehlstext den Tabellennamen der Quelldaten in der Datenbank abändern und mit "ok" und "fertig stellen" abschließen. Danach lädt die Pivottabelle die Daten aus der neuen Tabelle und (nachdem der Aufbau derselbe ist) zeigt die neuen Daten in derselben Pivot-Mimik an.
Diese manuelle Geschichte müsste doch auch per VBA gehen?!
Mein Ansatz war mal: ActiveSheet.PivotTableWizard SourceType:=xlExternal, SourceData:="XYDB.dbo.View_Daten1"
bzw. für die andere Tabelle:
ActiveSheet.PivotTableWizard SourceType:=xlExternal, SourceData:="XYDB.dbo.View_Daten2"
Leider läuft das so nicht.
Danke für Lösungsvorschläge!
Gruß
Lonni

Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Evtl. über .CommandText lösbar ?
07.05.2008 12:36:00
NoNet
Hallo Lonni,
ich habe das mal mit einer PIVOT-Tabelle nachgestellt, die ihre Daten aus einer ACCESS-Datenbank bezieht. Diese Abfrage wird intern in einer SQL-Abfrage gespeichert, die per Eigenschaft ActiveWorkbook.PivotCaches(1).Commandtext ausgelesen und verändert werden kann !
Mit folgendem VBA-Code kannst Du den SQL-Code er Abfrage modifizieren und somit auf eine andere Datenquelle zugreifen :
VBA-Code:
Sub TauschePivotDatenQuelleACCESS()
    'Beispiel : Die externe Datenquelle einer PIVOT-Tabelle in Excel tauschen/ändern
    '07.05.2008, NoNet - www.excelei.de
    'Datenbank "Daten.mdb" enthält 2 Tabellen : "Tabelle1" und "Tabelle2"
    'Die PIVOT-Tabelle in Excel ist AKTUELL mit "Tabelle1" verknüpft (Felder "Name" und "Wert")
    'PIVOT-Datenquelle von "Tabelle1" der ACCESS-Datenbank auf "Tabelle2" der
    'gleichen Datenbank ändern. Datenbank selbst bleibt identisch !
    'Die beiden Tabellen müssen die gleichen (in der PIVOT-Tabelle verwendeten Felder beinhalten !)
    'PivotCaches(1) ist die erste PIVOT-Datenquelle der aktuelle Mappe !
    'CommandText enthält den SQL-String der Abfrage - muss evtl. angepasst werden :
    '    SELECT Tabelle1.Name, Tabelle1.Wert
    '    FROM Tabelle1 Tabelle1
    '    ORDER BY Tabelle1.Name
    ActiveWorkbook.PivotCaches(1).CommandText = _
        Replace(ActiveWorkbook.PivotCaches(1).CommandText, "Tabelle1", "Tabelle2")
    'CommandText enthält nun den geänderten SQL-String der Abfrage :
    '    SELECT Tabelle2.Name, Tabelle2.Wert
    '    FROM Tabelle2 Tabelle2
    '    ORDER BY Tabelle2.Name
End Sub
Teste doch mal, ob das auch für deine Datenbank-Verbindung funktioniert !
Gruß, NoNet

Anzeige
Und noch ein Bildchen zur Veranschauung
07.05.2008 13:03:27
NoNet
Hallo Lonni, hey @alle Interessierten,
hier die bildliche Darstellung dieses Beispiels :
Userbild
Gruß, NoNet

AW: Evtl. über .CommandText lösbar ?
07.05.2008 13:09:24
Lonni
Hallo noNet,
da bleibt mir nur noch zu sagen:
PERFEKT!!!
Danke und Gruß
Lonni
Anzeige
;
Anzeige

Infobox / Tutorial

Pivotdatenquelle per VBA ändern


Schritt-für-Schritt-Anleitung

Um die Datenquelle einer Pivottabelle in Excel per VBA zu ändern, befolge diese Schritte:

  1. Öffne den Visual Basic for Applications (VBA) Editor:

    • Drücke Alt + F11, um den VBA-Editor zu öffnen.
  2. Erstelle ein neues Modul:

    • Klicke mit der rechten Maustaste auf „VBAProject (deine_datei.xlsx)“ und wähle „Einfügen“ > „Modul“.
  3. Füge den folgenden VBA-Code ein:

    Sub TauschePivotDatenQuelleACCESS()
       ' Beispiel: Ändere die Datenquelle einer Pivottabelle
       ActiveWorkbook.PivotCaches(1).CommandText = _
           Replace(ActiveWorkbook.PivotCaches(1).CommandText, "Tabelle1", "Tabelle2")
    End Sub
    • Dieser Code ersetzt „Tabelle1“ durch „Tabelle2“ in der SQL-Abfrage der Pivottabelle.
  4. Führe das Makro aus:

    • Drücke F5, während der Cursor im Code ist, um das Makro auszuführen.
  5. Überprüfe die Pivottabelle:

    • Gehe zurück zu Excel und aktualisiere die Pivottabelle, um sicherzustellen, dass die neuen Daten angezeigt werden.

Häufige Fehler und Lösungen

  • Fehler: „Laufzeitfehler 1004“

    • Lösung: Überprüfe, ob der PivotCache tatsächlich existiert und ob die Tabelle, die du referenzierst, korrekt ist.
  • Fehler: „Objekt erforderlich“

    • Lösung: Stelle sicher, dass du die richtige PivotTable und den richtigen PivotCache angesprochen hast. Möglicherweise musst du den Index anpassen.

Alternative Methoden

Eine andere Möglichkeit, die Datenquelle einer Pivottabelle zu ändern, besteht darin, die PivotTableWizard-Methode zu verwenden. Hier ist ein Beispiel:

Sub ÄnderePivotDatenquelle()
    ActiveSheet.PivotTableWizard SourceType:=xlExternal, SourceData:="XYDB.dbo.View_Daten2"
End Sub

Diese Methode ist nützlich, wenn du direkt mit externen Datenquellen arbeiten möchtest, ohne die SQL-Abfrage zu ändern.


Praktische Beispiele

Angenommen, du hast eine Pivottabelle, die sich auf „Tabelle1“ einer Access-Datenbank bezieht. Um die Datenquelle auf „Tabelle2“ zu ändern, kannst du den folgenden VBA-Code verwenden:

Sub WechselDatenquelle()
    With ActiveWorkbook.PivotCaches(1)
        .CommandText = Replace(.CommandText, "Tabelle1", "Tabelle2")
        .Refresh
    End With
End Sub

Dieser Code sorgt dafür, dass die Pivottabelle auf die neuen Daten zugreift, ohne dass du manuell eingreifen musst.


Tipps für Profis

  • Verwende PivotTable.PivotCache.Refresh: Nach dem Ändern der Datenquelle ist es wichtig, die Pivottabelle zu aktualisieren. Das kannst du mit .Refresh erreichen.

  • Dokumentiere deinen Code: Füge Kommentare hinzu, um die Funktion jedes Teils deines Codes zu erklären, besonders wenn du mit mehreren Datenquellen arbeitest.

  • Teste in einer sicheren Umgebung: Bevor du Änderungen an einer wichtigen Datei vornimmst, teste deinen VBA-Code in einer Kopie der Datei.


FAQ: Häufige Fragen

1. Kann ich die Datenquelle einer Pivottabelle auch manuell ändern? Ja, du kannst die Datenquelle manuell ändern, indem du auf die Pivottabelle klickst, dann auf „PivotTable-Analyse“ und „Datenquelle ändern“ wählst.

2. Funktioniert dieser VBA-Code auch mit Excel Online? Leider werden VBA-Makros in Excel Online nicht unterstützt. Du musst die Desktop-Version von Excel verwenden.

3. Gibt es Einschränkungen bei der Verwendung von externen Datenquellen? Ja, stelle sicher, dass die Struktur der neuen Datenquelle mit der alten übereinstimmt, damit die Pivottabelle korrekt aktualisiert werden kann.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige