23.04.2024, 07:55
Hallo,
ich habe eine Excel-Datei in der mehrere Daten per PowerQuery abgefragt werden (aktuell 12 Abfragen).
Ich habe einen VBA-Button eingerichtet, der diese Daten aktualisiert (ThisWorkbook.RefreshAll).
Jetzt möchte ich eine Fertigmeldung einrichten, die über den Fortschritt informiert (1/12 .... 2/12 .... 3/12 .... ).
Via Google habe ich hierzu auch ein schönes Script gefunden:
Jetzt suche ich allerdings nach einer Möglichkeit alle QueryTables aufzulisten, zu zählen und per Scheife zu durchlaufen ohne im Code alle Namen einzeln aufzuführen.
Wie könnte das laufen?
Gruß,
Kevin
ich habe eine Excel-Datei in der mehrere Daten per PowerQuery abgefragt werden (aktuell 12 Abfragen).
Ich habe einen VBA-Button eingerichtet, der diese Daten aktualisiert (ThisWorkbook.RefreshAll).
Jetzt möchte ich eine Fertigmeldung einrichten, die über den Fortschritt informiert (1/12 .... 2/12 .... 3/12 .... ).
Via Google habe ich hierzu auch ein schönes Script gefunden:
Code:
'Hier die Deklaration im allgemeinen Teil
Public WithEvents qt1 As QueryTable
Public WithEvents qt2 As QueryTable
Public WithEvents qt3 As QueryTable
Public qts1 As Boolean
Public qts2 As Boolean
Public qts3 As Boolean
'Beim öffnen der Arbeitsmappe werden die Variablen belegt
Private Sub Workbook_Open()
qts1 = False
qts2 = False
qts3 = False
Set qt1 = ThisWorkbook.Worksheets("Daten").QueryTables("Abfrage_Daten")
Set qt2 = ThisWorkbook.Worksheets("Daten").QueryTables("Abfrage_Auswahl")
Set qt3 = ThisWorkbook.Worksheets("Rohdaten").QueryTables("Abfrage_Roh")
'Hier kann aber auch anstelle der Namen mit Index gearbeitet werden
'Set qt1 = ThisWorkbook.Worksheets(1).QueryTables(1)
'Set qt2 = ThisWorkbook.Worksheets(1).QueryTables(2)
'Set qt3 = ThisWorkbook.Worksheets(2).QueryTables(1)
End Sub
'Ab hier werden die Ereignisse überwacht:
Private Sub qt1_afterRefresh(ByVal success As Boolean)
If success Then
qts1 = True
MsgBox "Abfrage_Daten vom Arbeitsblatt >>Daten<< wurde aktualisiert"
If qts1 And qts2 And qts3 Then
MsgBox "alles aktualisiert"
End If
End If
End Sub
Jetzt suche ich allerdings nach einer Möglichkeit alle QueryTables aufzulisten, zu zählen und per Scheife zu durchlaufen ohne im Code alle Namen einzeln aufzuführen.
Wie könnte das laufen?
Gruß,
Kevin