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

warten bis Abfragen aktualisiert sind

Forumthread: warten bis Abfragen aktualisiert sind

warten bis Abfragen aktualisiert sind
14.09.2025 10:20:34
Christian
Hallo,

mal eine kurze Frage zu meinem Codeteil:

 ' --- Abfragen aktualisieren ---

For Each qry In ThisWorkbook.Queries
Select Case qry.Name
Case "U30", "MRS", "BV"
qry.Refresh
End Select
Next qry

' --- Sub UpdateAndDeleteFiles starten ---
Call UpdateAndDeleteFiles


wie kann ich erzwingen, dass das Sub erst ausgeführt wird, wenn die 3 Abfragen fertig aktualisiert sind? Den Haken "Aktualisierung im Hintergrund zulassen" habe ich bereits herausgenommen.

Danke
Christian
Anzeige

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: warten bis Abfragen aktualisiert sind
14.09.2025 10:40:39
Luschi
Hallo Christian,

laß mal diesen Code laufen:
Sub DoIt()

Dim con As WorkbookConnection
Dim Cname As String

For Each con In ActiveWorkbook.Connections
Debug.Print con.name
Next con
End Sub
Und Du wirst staunen, wie Deine PQ-Abfragen tatsächlich sich nennen.

Gruß von Luschi
aus klein-Paris
Anzeige
AW: warten bis Abfragen aktualisiert sind
14.09.2025 16:48:07
Jan
Hallo
Vielleicht so, aber ohne Gewähr
Sub RefreshPQAndThenRun()

Dim conn As WorkbookConnection, arrQueries As Variant, i As Long
arrQueries = Array("U30", "MRS", "BV")
For i = LBound(arrQueries) To UBound(arrQueries)
For Each conn In ThisWorkbook.Connections
If conn.Name = arrQueries(i) Or conn.Name = "Query - " & arrQueries(i) Then conn.Refresh
End If
Next conn
Next i
Do
DoEvents
If Not AnyConnectionRefreshing(arrQueries) Then Exit Do
Loop
Call UpdateAndDeleteFiles
End Sub

Private Function AnyConnectionRefreshing(arrQueries As Variant) As Boolean
Dim conn As WorkbookConnection, i As Long
AnyConnectionRefreshing = False
For i = LBound(arrQueries) To UBound(arrQueries)
For Each conn In ThisWorkbook.Connections
If (conn.Name = arrQueries(i) Or conn.Name = "Query - " & arrQueries(i)) _
And conn.Refreshing Then AnyConnectionRefreshing = True
Exit Function
End If
Next conn
Next i
End Function
Anzeige
AW: warten bis Abfragen aktualisiert sind
14.09.2025 22:44:41
Ulf
Hi,
auf den Rückgabewert warten und wie von den anderen gezeigt den Namen abfragen sollte es tun
Public Function Aktualisiere() as Long'oder Sub

Dim lngZ As Long
Dim qry As QueryTable
Dim wb As Workbook
Dim ws As Worksheet
Dim lObj As ListObject
Set wb = ThisWorkbook
For Each ws In wb.Worksheets
For Each lObj In ws.ListObjects
'Hier abfragen mit If ...
Debug.Print CStr(lObj.QueryTable.WorkbookConnection.Name)
lngZ = lngZ + -1 * lObj.QueryTable.Refresh
Next lObj
Next ws
'weiter
Aktualisiere=lngZ
'MsgBox CStr(lngZ) & " Tabelle(n) aktualisiert"
End Function'Sub

hth
Ulf
Anzeige
AW: warten bis Abfragen aktualisiert sind
14.09.2025 23:12:36
Christian
Hallo Ulf,

das läuft bei mir zusammen mit dem If Block von Luschi irgendwie in eine Endlos Schleife, auch 10 Minuten später sagt mir Excel immer noch, die Anfragen würden aktualisiert.
Aber ich habe ja auch mit Luschis Vorschlag jetzt einen funktionierenden.

Vielen Dank
Christian
Anzeige
AW: warten bis Abfragen aktualisiert sind
15.09.2025 19:10:42
Luschi
Hallo Christian,

- wenn es zwischen den PQ-Abfragen Abhängigkeiten gibt
- und Du willst die Reihenfolge selbst festlegen,
- dann ist die Variante à la Eifeljoi5 die bessere Wahl
- denn in der Schleife à la Luschi ist diese gewollte Reihenfolge NICHT gewährleistet:
Sub Aktualisieren_1a()

With Worksheets("Tabelle1")
.ListObjects("U30").QueryTable.Refresh BackgroundQuery:=False
.ListObjects("MRS").QueryTable.Refresh BackgroundQuery:=False
.ListObjects("BV").QueryTable.Refresh BackgroundQuery:=False
End With
End Sub
Gruß von Luschi
aus klein-Paris

PS: Du mußt nur noch den Tabellennamen (hier: "Tabelle1") anpassen.
Anzeige
AW: warten bis Abfragen aktualisiert sind
15.09.2025 19:57:26
Christian
Hallo Luschi,

das sieht soweit gut aus, danke.
Aber die Reihenfolge wäre egal gewesen.

DAnke
Christian
AW: warten bis Abfragen aktualisiert sind
14.09.2025 15:43:40
Christian
Hallo Luschi,

danke für den Hinweis,

Ok da steht dann Abfrage - BV usw.
Ich verstehe aber trotzdem den Zusammenhang zu meiner Frage nicht, was mir diese Erkenntnis jetzt bringt.
Das Makro aktualisiert die Abfragen ja , es wartet mit dem nächsten Schritt ja nur nicht, bis die Aktualisierung abgeschlossen ist.
Noch als kleine Info, es ist kein Problem wenn die 3 Abfragen gleichzeitig aktualisiert werden, es muss nur alle 3 abgeschlossen sein, bevor das andere Makro ausgeführt wird.

Gruß
Christian
Anzeige
AW: warten bis Abfragen aktualisiert sind
14.09.2025 16:36:36
Charly CNX
Hi

In den Eigenschaften der Abfragen, den Haken bei "Im Hintergrund aktualisieren" raus nehmen.
Hilfts?

VG Charly
AW: warten bis Abfragen aktualisiert sind
14.09.2025 19:04:15
Luschi
Hallo Christian,

- was gibt es da nicht zu verstehen: Case "U30", "MRS", "BV"
- die Abfragen haben aber folgende Namen: "Abfrage - BV", "Abfrage - U30", "Abfrage - BV"

Ich mach das übrigens so:
For Each con In ActiveWorkbook.Connections

Cname = con.Name
If Left(Cname, 8) = "Query - " Or Left(Cname, 10) = "Abfrage - " Then
Select Case Cname
Case "Abfrage - U30", "Abfrage - MRS", "Abfrage - BV"
With ActiveWorkbook.Connections(Cname).OLEDBConnection
.BackgroundQuery = False
.Refresh
.BackgroundQuery = True
End With
End Select
End If
Next
End Sub
Gruß von Luschi
aus klein-Paris
Anzeige
AW: warten bis Abfragen aktualisiert sind
14.09.2025 20:25:26
Christian
Hallo Luschi, was ich nicht verstanden habe, entweder der Name passt und die Abfrage wird als solche erkannt und aktualisiert, oder der Name stimmt nicht und sie wird nicht erkannt und eben nicht aktualisiert. (in meiner Denkweise).

Und da sie eben aktualisiert wird in meiner Version des Codes bin ich beim Schreiben des Beitrags davon ausgegangen, dass das Problem nicht in der Bezeichnung der Abfragen liegt.

ZUm Testen komme ich erst nach dem Kochen, bin am verhungern.

Melde mich dann
Christian
Anzeige
AW: warten bis Abfragen aktualisiert sind
14.09.2025 22:54:29
Christian
Hallo Luschi,
das sieht schon deutlich besser aus, vielen Dank
Christian
AW: warten bis Abfragen aktualisiert sind
14.09.2025 21:24:44
Eifeljoi 5
Hallo

Ich mache eine PQ-Aktualisierung wenn es mit VBA sein muss immer nach dem Muster, oder ohne VBA auch mit einem Excel-Skript, hat aber den Nachteil das Skript aktualisiert alle PQ Dateien und man nicht bestimmen in welcher Reihenfolge aktualisiert wird.
Sub Aktualisiere()

Range("Chris[[#Headers],[SpalteA]]").ListObject.QueryTable.Refresh BackgroundQuery:=False
Range("Leute1[[#Headers],[Position]]").ListObject.QueryTable.Refresh BackgroundQuery:=False
End Sub
Anzeige
AW: warten bis Abfragen aktualisiert sind
14.09.2025 16:38:04
Christian
Hallo Charly,

danke für deine Antwort
wie ich im Eingangspost bereits sagte, habe ich das bereits getan.

Gruß
Christian
Anzeige
Anzeige
Live-Forum - Die aktuellen Beiträge
Datum
Titel
14.05.2026 13:31:09
14.05.2026 09:50:42
13.05.2026 19:14:18