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

Event nach Refresh einer Connection

Forumthread: Event nach Refresh einer Connection

Event nach Refresh einer Connection
04.12.2021 15:41:52
Ralph
Hallo,
ich importiere über eine PowerQuery Daten in meine Exceldatei. Das klappt auch automatisch wunderbar. Was mir nun noch fehl ist ein Event, das ausgelöst wird, wenn die Aktualisierung abgeschlossen wurde. Mit dem Makrorekorder habe ich mal die Eigenschaften der Verbindung (Connection) aufgezeichnet. Das Event QueryTable.AfterRefresh funktioniert hier leider nicht.
Hat jemand eine Idee, oder gibt es hier kein Event?
With ActiveWorkbook.Connections("Abfrage - GV").OLEDBConnection
.BackgroundQuery = True
.CommandText = Array("SELECT * FROM [GV]")
.CommandType = xlCmdSql
.Connection = _
"OLEDB;Provider=Microsoft.Mashup.OleDb.1;Data Source=$Workbook$;Location=GV;Extended Properties="""""
.RefreshOnFileOpen = True
.RefreshPeriod = 1
.SavePassword = False
.SourceConnectionFile = ""
.SourceDataFile = ""
.ServerCredentialsMethod = xlCredentialsMethodIntegrated
.AlwaysUseConnectionFile = False
End With
With ActiveWorkbook.Connections("Abfrage - GV")
.Name = "Abfrage - GV"
.Description = "Verbindung mit der Abfrage 'GV' in der Arbeitsmappe."
End With
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Event nach Refresh einer Connection
04.12.2021 15:52:31
Oberschlumpf
Hi Ralph,
ich weiß nich, ob das hier...
https://www.ms-office-forum.net/forum/showthread.php?t=269414
...von hinten-durch-die-brust-sticht-ins-auge ist....aber hilft das vielleicht, oder hat das mit deiner Frage gar nix zu tun?
Ciao
Thorsten
Anzeige
[GELÖST] Event nach Refresh einer Connection
04.12.2021 15:53:49
Ralph
Es kann so einfach sein :-)
Das Worksheet.Change Event wird nach einer aktualisierung ausgeleöst....das reicht vollkommen ;-)
AW: [GELÖST] Event nach Refresh einer Connection
04.12.2021 18:03:04
Luschi
Hallo Ralph,
ich frage mich allerdings, was Dein geposteter Code mit 'Power Query' zu tun hat, denn der stammt von der alten Abfrage-Methode aus Excel 2003/2007-Zeiten und PQ gibt es erst ab Exxcel 2010 und beginnt mit 'Let ....'.
Gruß von Luschi
aus klein-Paris
Anzeige
;
Anzeige

Infobox / Tutorial

Event nach Refresh einer Connection in Excel VBA


Schritt-für-Schritt-Anleitung

Um ein Event auszulösen, nachdem eine Connection in Excel aktualisiert wurde, kannst Du das Worksheet.Change Event nutzen. Hier sind die Schritte, um dies zu implementieren:

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

  2. Füge ein neues Modul ein:

    • Rechtsklick auf "VBAProject (DeinWorkbook)" > Einfügen > Modul.
  3. Füge folgenden Code ein:

    Private Sub Worksheet_Change(ByVal Target As Range)
        ' Dein Code, der nach der Aktualisierung ausgeführt werden soll
        MsgBox "Die Verbindung wurde aktualisiert!"
    End Sub
  4. Schließe den VBA-Editor und gehe zurück zu Excel.

  5. Aktualisiere die Connection (z.B. über Daten > Abfragen und Verbindungen > Alle aktualisieren).


Häufige Fehler und Lösungen

  • Fehler: Das Worksheet.Change Event wird nicht ausgelöst.

    • Lösung: Stelle sicher, dass Du das Event im richtigen Arbeitsblattmodul platziert hast. Klicke im VBA-Editor auf das entsprechende Arbeitsblatt (z.B. "Tabelle1") und füge den Code dort ein.
  • Fehler: Die Aktualisierung funktioniert nicht wie erwartet.

    • Lösung: Überprüfe die ActiveWorkbook.Connections und stelle sicher, dass die Verbindung aktiv ist und die richtigen Daten abruft.

Alternative Methoden

Eine weitere Möglichkeit, nach einer querytable.refresh oder activeworkbook.connections refresh ein Event auszulösen, ist das Verwenden von Application.OnTime, um eine Routine nach einer bestimmten Zeitspanne auszuführen. Hier ein Beispiel:

Sub RefreshAndNotify()
    ActiveWorkbook.Connections("Abfrage - GV").Refresh
    Application.OnTime Now + TimeValue("00:00:01"), "NotifyRefresh"
End Sub

Sub NotifyRefresh()
    MsgBox "Die Connection wurde aktualisiert!"
End Sub

Praktische Beispiele

Hier ist ein Beispiel, wie Du eine Connection aktualisieren und dann ein Ereignis auslösen kannst:

Sub RefreshData()
    With ActiveWorkbook.Connections("Abfrage - GV")
        .Refresh
    End With
    MsgBox "Die Daten wurden erfolgreich aktualisiert!"
End Sub

Dieses Skript aktualisiert die Verbindung und zeigt eine Nachricht an, wenn der Prozess abgeschlossen ist.


Tipps für Profis

  • Verwende BackgroundQuery für eine asynchrone Aktualisierung. Dadurch wird Excel nicht blockiert, während die Daten geladen werden.

  • Nutze QueryTable.AfterRefresh in Kombination mit einer Worksheet-Eventprozedur, wenn Du mehr Kontrolle benötigst.

  • Halte Deine VBA-Projekte gut dokumentiert, um die Wartung und das Debugging zu erleichtern.


FAQ: Häufige Fragen

1. Was mache ich, wenn QueryTable.AfterRefresh nicht funktioniert?
Stelle sicher, dass Du das Event im richtigen Kontext verwendest. Bei Verbindungen, die nicht über QueryTable verwaltet werden, solltest Du das Worksheet.Change Event verwenden.

2. Wie kann ich sicherstellen, dass meine Verbindung immer aktuell ist?
Du kannst die Eigenschaft .RefreshOnFileOpen auf True setzen, sodass die Verbindung beim Öffnen der Datei automatisch aktualisiert wird.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige