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

VBA RefreshAll wird nicht ausgelöst

Forumthread: VBA RefreshAll wird nicht ausgelöst

VBA RefreshAll wird nicht ausgelöst
18.12.2022 01:56:41
captainkeksxx
Seid gegrüßt Freunde der Nacht,
ich stehe vor einem hoffentlich nur kleinen Problem.
Ich würde gerne meine PowerQuery Abfrage über VBA aktualisieren.
Versucht habe ich es mit:

ActiveWorkbook.RefreshAll
Dieser Befehl wird aber erst NACH allen Codes ausgeführt und nicht innerhalb eines Codeablaufes.
Ich lege über eine Prozedur eine neue csv.Datei in einen Ordner, möchte dann die PowerQuery Abfrage aktualisieren und dann die letzte Zeile der PowerQuery-Tabelle ermitteln. Das liefert aber ein falsches Ergebnis, da "RefreshAll" viel zu spät ausgeführt wird.
Ich hab das auch getestet mit

ActiveWorkbook.RefreshAll
Application.Wait (Now + TimeValue("0:00:10"))
Auch mit:

ActiveWorkbook.RefreshAll
Application.CalculateUntilAsyncQueriesDone
Application.Wait (Now + TimeValue("0:00:10"))
Doch RefreshAll wird erst NACH den 10sek tatsächlich ausgelöst.
Mein Code geht danach aber weiter und benötigt die neuen Zeilen (die aktuell solange der Code noch läuft, nicht existieren)
Gibt es andere Befehle oder kann ich ein VBA Code so pausieren, dass er dieses PQ_Update auslöst und dann weiter macht?
Tschaukakao
captainkeks
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: VBA RefreshAll wird nicht ausgelöst
18.12.2022 07:02:53
Charly
Hi
Entferne in den Eigenschaften deiner Abfragen den Haken bei "Aktualisierung im Hintergrund zulassen".
Dann sollte es auch ohne warten laufen.
Gruß Charly
AW: VBA RefreshAll wird nicht ausgelöst
18.12.2022 12:29:13
captainkeksxx
Hi Charly,
vielen Dank! Das hat geklappt!
Anzeige
;
Anzeige

Infobox / Tutorial

VBA RefreshAll effektiv nutzen


Schritt-für-Schritt-Anleitung

Um die ActiveWorkbook.RefreshAll-Methode in VBA effektiv zu nutzen, folge diesen Schritten:

  1. Öffne den VBA-Editor: Drücke ALT + F11 in Excel.

  2. Füge ein neues Modul hinzu: Klicke mit der rechten Maustaste auf "VBAProject (DeinDateiname)", wähle "Einfügen" und dann "Modul".

  3. Schreibe deinen Code: Füge den folgenden Code in das Modul ein:

    Sub UpdatePowerQuery()
       ' Deine CSV-Datei erstellen
       ' ...
    
       ' Aktualisiere alle Abfragen
       ActiveWorkbook.RefreshAll
    
       ' Warte auf die Aktualisierung
       Application.CalculateUntilAsyncQueriesDone
    
       ' Weiterverarbeiten
       ' ...
    End Sub
  4. Teste den Code: Führe das Makro aus, um sicherzustellen, dass die Aktualisierung korrekt erfolgt.


Häufige Fehler und Lösungen

  • Fehler: Excel Refresh All not working
    Lösung: Überprüfe die Eigenschaften deiner Abfragen und stelle sicher, dass "Aktualisierung im Hintergrund zulassen" deaktiviert ist.

  • Problem: RefreshAll wird zu spät ausgeführt
    Lösung: Verwende Application.CalculateUntilAsyncQueriesDone, um sicherzustellen, dass die Aktualisierungen abgeschlossen sind, bevor der Code fortfährt.


Alternative Methoden

Wenn ActiveWorkbook.RefreshAll nicht die gewünschten Ergebnisse liefert, gibt es alternative Methoden:

  • Verwendung von ThisWorkbook.RefreshAll: Diese Methode ist nützlich, wenn du sicherstellen möchtest, dass die Aktualisierung spezifisch für das aktuelle Workbook erfolgt.

    ThisWorkbook.RefreshAll
  • Aktualisierung einer bestimmten Tabelle: Um nur eine bestimmte Tabelle zu aktualisieren, kannst du ActiveSheet.RefreshAll verwenden.


Praktische Beispiele

Hier sind einige praktische Beispiele für die Verwendung von RefreshAll in verschiedenen Szenarien:

  • Aktualisierung von Daten aus einer CSV-Datei:

    Sub RefreshCSVData()
       ' CSV-Daten importieren
       ' ...
    
       ' Aktualisiere alle Abfragen
       ActiveWorkbook.RefreshAll
    End Sub
  • Verwenden einer Schleife für mehrere Abfragen:

    Sub RefreshMultipleQueries()
       Dim qry As QueryTable
       For Each qry In ActiveSheet.QueryTables
           qry.Refresh
       Next qry
    End Sub

Tipps für Profis

  • Verwende Application.ScreenUpdating = False: Dies kann die Ausführungsgeschwindigkeit erhöhen, wenn du viele Aktualisierungen durchführst. Vergiss nicht, es am Ende auf True zurückzusetzen.

    Application.ScreenUpdating = False
    ActiveWorkbook.RefreshAll
    Application.ScreenUpdating = True
  • Fehlerbehandlung einfügen: Um sicherzustellen, dass dein Code auch bei Fehlern stabil bleibt, füge eine Fehlerbehandlungsroutine hinzu.


FAQ: Häufige Fragen

1. Warum funktioniert ActiveWorkbook.RefreshAll nicht wie erwartet?
Es kann sein, dass die Abfragen im Hintergrund aktualisiert werden. Überprüfe die Abfrageeinstellungen und deaktiviere die Hintergrundaktualisierung.

2. Wie kann ich sicherstellen, dass die Aktualisierung abgeschlossen ist, bevor ich fortfahre?
Verwende Application.CalculateUntilAsyncQueriesDone, um sicherzustellen, dass alle Abfragen vollständig aktualisiert wurden, bevor der Code fortfährt.

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