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

Forumthread: VBA Verknüpfung aktualisieren mit Pause

VBA Verknüpfung aktualisieren mit Pause
16.09.2022 11:51:19
Pok
Hallo liebe Excel-Experten,
in einer Excel-Liste besteht eine Verknüpfung zu einer anderen Datei, diese Verknüpfung wird durch ein Makro aktualisiert.

ActiveWorkbook.RefreshAll
Allerdings führt das Makro direkt den nächsten Schritt aus, ohne zu warten, bis die Verknüpfung vollständig aktualisiert wurde.
Mit einer Pause funktioniert es grundsätzlich, allerdings nicht optimal.

Application.Wait Now + TimeSerial(0, 0, 50) 
Die verknüpfte Datei kann mal 1-2 MB klein sein, aber auch mal >10 MB.
Somit ist die Pause mal übertrieben lang und mal besteht die Gefahr, dass die Pause immer noch zu kurz ist.
Gibt es optimierte Befehle oder Möglichkeiten, dass das Makro erst den nächsten Schritt übernimmt, wenn die Aktualisierung beendet ist?
Vielen Dank vorab.
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
ohne Pause
16.09.2022 12:01:45
Charly
Hi
Nimm in den Eigenschaften deiner Abfragen den Haken bei "Aktualisierung im Hintergrund zulassen" raus.
Gruß Charly
AW: VBA Verknüpfung aktualisieren mit Pause
16.09.2022 12:05:37
Daniel
Hi
schau mal in die Eigenschaften der Verknüpfung. Gibt es da was mit "Aktualisierung im Hintergrund zulassen" und ist das aktiv?
wenn ja, deaktiviere diese Option, dann müsste Excel warten, bis die Daten da sind.
Gruß Daniel
Anzeige
AW: VBA Verknüpfung aktualisieren mit Pause
16.09.2022 12:43:04
Pok
Hallo Daniel,
top vielen Dank!
Ich habe die Option direkt unter Abfrageeigenschaften deaktiviert. So kann ich sicher gehen, dass alle Nutzer die gleiche Option eingestellt haben.
Unter diesen Abfrageeigenschaften gibt es noch die Option "Schnelles Laden von Daten aktivieren"..
Ist diese Option wirklich hilfreich und fehlerfrei?
Anzeige
AW: VBA Verknüpfung aktualisieren mit Pause
16.09.2022 13:10:38
Daniel
keine Ahnung, damit kenne ich mich nicht aus
AW: VBA Verknüpfung aktualisieren mit Pause
19.09.2022 10:02:45
ChrisL
Hi
Fehlerfrei ja
Hilfreich, kommt drauf an.
Quelle z.B. hier:
https://social.technet.microsoft.com/Forums/en-US/3c50901e-58c5-4865-8b4e-d2dec4d2fb60/fast-data-load
Nach meinem Verständnis:
- Die Einstellung macht nur Sinn, wenn die Hintergrundaktualisierung deaktiviert wurde
- Die Aktualisierung kann dadurch schneller werden, aber es führt dazu, dass Excel während der Aktualisierung "blockiert" (unresponsive)
- Im Beitrag wird vermutet, dass durch die Option die vollständige Prozessorleistung (im Sinne einer eigenen Instanz) für die Aktualisierung einsetzt, wodurch es zwar schneller wird, aber eben auch "blockiert".
Fazit. Ich würde es einfach mal ausprobieren.
cu
Chris
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

VBA Verknüpfung aktualisieren mit Pause


Schritt-für-Schritt-Anleitung

  1. Öffne deine Excel-Datei und gehe zu dem Arbeitsblatt, das die Verknüpfung enthält.

  2. Aktiviere die Entwicklertools:

    • Klicke auf "Datei" > "Optionen" > "Menüband anpassen" und aktiviere das Kontrollkästchen "Entwicklertools".
  3. Öffne den VBA-Editor:

    • Klicke auf "Entwicklertools" > "Visual Basic".
  4. Erstelle ein neues Modul:

    • Klicke mit der rechten Maustaste auf "VBAProject (deinWorkbookName)" > "Einfügen" > "Modul".
  5. Füge den folgenden Code ein, um die Verknüpfung zu aktualisieren und eine Pause einzufügen:

    Sub AktualisiereVerknüpfung()
       ActiveWorkbook.RefreshAll
       ' Warten bis die Aktualisierung abgeschlossen ist
       Application.Wait Now + TimeSerial(0, 0, 5) ' 5 Sekunden Pause
    End Sub
  6. Teste das Makro:

    • Schließe den VBA-Editor und gehe zurück zu Excel.
    • Drücke Alt + F8, wähle AktualisiereVerknüpfung und klicke auf "Ausführen".
  7. Deaktiviere die Hintergrundaktualisierung:

    • Gehe zu "Daten" > "Abfragen und Verbindungen" > "Abfrageeigenschaften" und entferne das Häkchen bei "Aktualisierung im Hintergrund zulassen".

Häufige Fehler und Lösungen

  • Fehler: Excel reagiert nicht während der Aktualisierung: Dies kann passieren, wenn die Option "Schnelles Laden von Daten aktivieren" aktiviert ist. Stelle sicher, dass die Hintergrundaktualisierung deaktiviert ist, um dies zu vermeiden.

  • Problem mit Verknüpfungen: Wenn die automatische Aktualisierung von Verknüpfungen deaktiviert ist, kannst du diese unter "Daten" > "Verknüpfungen" aktivieren.


Alternative Methoden

  • Power Query verwenden: Du kannst auch Power Query verwenden, um Daten aus anderen Dateien zu importieren und die Option "Schnelles Laden von Daten aktivieren" zu nutzen. Dies kann die Aktualisierungszeit verkürzen, ohne dass du eine VBA-Pause benötigst.

  • Verwendung von DoEvents: Statt Application.Wait kannst du auch DoEvents verwenden, um Excel die Möglichkeit zu geben, auf andere Prozesse zu reagieren, während die Aktualisierung durchgeführt wird.

Sub AktualisiereUndWarte()
    ActiveWorkbook.RefreshAll
    Do While ActiveWorkbook.Refreshing
        DoEvents
    Loop
End Sub

Praktische Beispiele

  • Beispiel 1: Wenn du eine Verknüpfung zu einer großen Datei hast, kannst du die oben genannten Methoden verwenden, um sicherzustellen, dass die Daten vollständig aktualisiert sind, bevor du mit weiteren Berechnungen fortfährst.

  • Beispiel 2: Nutze Excel VBA Pause in Verbindung mit anderen Funktionen, um sicherzustellen, dass deine Daten immer aktuell sind, bevor du sie analysierst oder präsentierst.


Tipps für Profis

  • Performance optimieren: Halte deine Abfragen und Datenmodelle einfach. Komplexe Abfragen können die Ladezeiten erhöhen.

  • Makros kombinieren: Du kannst mehrere Makros in einer Prozedur kombinieren, um die Effizienz zu steigern.

  • Regelmäßige Wartung: Überprüfe regelmäßig die Verknüpfungen und die relevanten Einstellungen, um sicherzustellen, dass alles optimal funktioniert.


FAQ: Häufige Fragen

1. Wie kann ich die automatische Aktualisierung von Verknüpfungen aktivieren?
Gehe zu "Daten" > "Verknüpfungen" und aktiviere die Option für die automatische Aktualisierung.

2. Was ist der Unterschied zwischen Application.Wait und DoEvents?
Application.Wait pausiert die Ausführung des Makros für eine bestimmte Zeit, während DoEvents Excel erlaubt, andere Prozesse während der Ausführung zu bearbeiten.

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