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

Forumthread: VBA: Pivottabelle aktualisieren nach DB-Abfrage

VBA: Pivottabelle aktualisieren nach DB-Abfrage
André
Moin zusammen,
ich habe eine Datentabelle, deren Daten über eine DB-Verbindung aus einer MySQL-Tabelle kommen. In einem zweiten Arbeitsblatt habe ich eine Pivottabelle inkl. Pivotchart, in der die Daten aus der ersten Tabelle ausgewertet werden.
Wenn ich nun die Datenverbindung über VBA aktualisiere, dann wird die Pivottabelle nicht mit aktualisiert. Auch dann nicht, wenn ich es explizit mit anstoße:

ActiveWorkbook.Connections("Monatsdaten").Refresh
Sheets("Auswertung").PivotTables("PivotTable1").PivotCache.Refresh
Führe ich den Befehl zum Aktualisieren der Pivottabelle direkt danach gesondert in einem anderen Script aus, funktioniert es tadellos.
Was mach ich falsch, bzw. wie kann ich es erreichen, daß die Pivottabelle aktualisiert wird, nachdem die DB-Abfrage durchgeführt wurde?
Gruß, André
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: VBA: Pivottabelle aktualisieren nach DB-Abfrage
18.03.2010 17:24:53
fcs
Hallo André,
das Problem ist wohl, dass das Makro die Aktualisierung der Connection-Daten startet, aber dann nicht wartet, bis die Aktualisierung abgeschlossen ist, sondern einfach weiter macht.
Ich weiss jetzt nicht genau, ob in deinem Fall ein zusätzlicher Parameter hilft. Dieser ist eigentlich für QueryTables vorgesehen.
ActiveWorkbook.Connections("Monatsdaten").Refresh BackgroundQuery:=False

Ansonsten könntest du die Aktualisierung der Pivot-Tabelle mit einer OnTime-Anweisung etwas Zeitverzögert starten.
Sub aa()
ActiveWorkbook.Connections("Monatsdaten").Refresh
'die 5 Sekunden in der Verzögerung ggf. anpassen
Application.OnTime earliesttime:=Now + TimeValue("00:00:05"), _
Procedure:="PivotAktualisieren"
End Sub
'diese Prozedur muss in einem allgemeinen Modul stehen!!
Sub PivotAktualisieren()
Sheets("Auswertung").PivotTables("PivotTable1").PivotCache.Refresh
End Sub
Gruß
Franz
Anzeige
AW: VBA: Pivottabelle aktualisieren nach DB-Abfrage
19.03.2010 08:50:58
André
Moin Franz,
das mit dem BackgroundQuery:=False führt leider zu einer Fehlermeldung. Und die Lösung mit dem X Sekunden warten kann ich leider nicht einsetzen. Die SQL-Abfrage dauert je nach eingestellten Kriterien mal 10s. Ich müßte also eine Wartezeit von min. 15s einstellen, und das auch bei den Abfragen, die in 1s erledigt sind. Die Leute, die mit den Tabellen arbeiten, würden mir selbige wohl um die Ohren hauen.
Gibt es irgendeine Möglichkeit abzufragen, ob eine bestimmte SQL-Abfrage bereits fertig ist? Dann könnte ich eine Schleife bauen, die immer wieder den Status der Abfrage ermittelt und die Pivottabelle aktualisiert, sowie die SQL-Abfrage fertig ist.
Gruß, André
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Pivottabelle in Excel nach DB-Abfrage mit VBA aktualisieren


Schritt-für-Schritt-Anleitung

Um eine Pivottabelle in Excel nach einer DB-Abfrage zu aktualisieren, kannst Du folgenden VBA-Code verwenden:

  1. Öffne das VBA-Editor-Fenster mit ALT + F11.
  2. Füge ein neues Modul hinzu: Klicke auf Einfügen > Modul.
  3. Setze den folgenden Code in das Modul:
Sub AktualisierePivottabelle()
    ' DB-Verbindung aktualisieren
    ActiveWorkbook.Connections("Monatsdaten").Refresh

    ' Pivottabelle aktualisieren
    Sheets("Auswertung").PivotTables("PivotTable1").PivotCache.Refresh
End Sub
  1. Führe das Makro AktualisierePivottabelle aus.

Falls Deine Pivottabelle sich nicht aktualisiert, könnte das daran liegen, dass die Datenverbindung nicht abgeschlossen ist. Um sicherzustellen, dass die Pivottabelle aktualisiert wird, nachdem die DB-Abfrage durchgeführt wurde, setze BackgroundQuery auf False:

ActiveWorkbook.Connections("Monatsdaten").Refresh BackgroundQuery:=False

Häufige Fehler und Lösungen

  • Die Pivottabelle aktualisiert sich nicht: Wenn Du den Befehl zur Aktualisierung der Pivottabelle direkt nach der Refresh-Anweisung ausführst, könnte die Datenverbindung noch nicht abgeschlossen sein. Achte darauf, den BackgroundQuery-Parameter auf False zu setzen.

  • Fehlermeldung bei BackgroundQuery:=False: Möglicherweise gibt es ein Problem mit der Verbindung zur DB. Überprüfe die Verbindungseinstellungen und stelle sicher, dass die Datenbank erreichbar ist.


Alternative Methoden

Eine alternative Methode, um die Pivottabelle zu aktualisieren, besteht darin, eine Zeitverzögerung einzurichten. Du kannst dies wie folgt tun:

Sub VerzögerteAktualisierung()
    ActiveWorkbook.Connections("Monatsdaten").Refresh
    Application.OnTime Now + TimeValue("00:00:05"), "PivotAktualisieren"
End Sub

Sub PivotAktualisieren()
    Sheets("Auswertung").PivotTables("PivotTable1").PivotCache.Refresh
End Sub

Hier wird die Pivottabelle 5 Sekunden nach der Datenaktualisierung aktualisiert. Du kannst die Zeit anpassen, je nach Dauer Deiner SQL-Abfrage.


Praktische Beispiele

Angenommen, Du hast eine MySQL-Datenbank, die regelmäßig aktualisiert wird. Um die Pivottabelle in Deinem Excel-Dokument automatisch zu aktualisieren, könntest Du folgendes Beispiel verwenden:

Sub AutomatischeAktualisierung()
    ' DB-Abfrage durchführen
    ActiveWorkbook.Connections("Monatsdaten").Refresh BackgroundQuery:=False

    ' Pivottabelle aktualisieren
    Sheets("Auswertung").PivotTables("PivotTable1").PivotCache.Refresh
End Sub

Dieser Code sorgt dafür, dass die Pivottabelle aktualisiert wird, nachdem die Abfrage vollständig abgeschlossen ist.


Tipps für Profis

  • Nutze die OnTime-Methode mit Bedacht, um die Performance Deiner Excel-Datei nicht zu beeinträchtigen.
  • Überprüfe regelmäßig die Verbindungen zu Deiner Datenbank, um sicherzustellen, dass alles reibungslos funktioniert.
  • Dokumentiere Deine VBA-Codes gut, damit Du und Deine Kollegen später leicht Änderungen vornehmen können.

FAQ: Häufige Fragen

1. Wie kann ich überprüfen, ob die SQL-Abfrage abgeschlossen ist?
Eine Möglichkeit besteht darin, eine Schleife zu verwenden, die den Status der Abfrage überwacht. Allerdings kann dies die Performance beeinträchtigen.

2. Was tun, wenn die Pivottabelle immer noch nicht aktualisiert wird?
Überprüfe die Verbindungseinstellungen und stelle sicher, dass die Daten korrekt geladen werden. Außerdem kannst Du den BackgroundQuery-Parameter anpassen.

3. Welche Excel-Version benötige ich?
Der gezeigte VBA-Code sollte in Excel 2010 und späteren Versionen funktionieren. Achte darauf, dass die Datenverbindungen korrekt eingerichtet sind.

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