Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1968to1972
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Power Querry aktualisierung in VBA Abfragen

Power Querry aktualisierung in VBA Abfragen
21.03.2024 05:36:52
Thomas
Hallo,
ich lasse mir über VBA eine PowerQuerry Abfrage aktualisieren und dann sollen weitere Sachen ausgeführt werden, dafür ist es aber notwendig das die aktualisierung auch tatsächlich abgeschlossen ist, wie kann ich das in VBA abfragen?
In der Arbeitsmappe gibt es mehrere "Verbindungen" in Power Querry (Importdateien) Diese werden in einer Abfrage zusammengefasst und diese wird in das erste Excel Tabellenblatt ausgegeben und nur diese Abfrage kann und muss ja aktualisiert werden, dazu würde ich gerne den Status abfragen, so das der anschließende Code erst ausgeführt wird wenn die Abfrage abgeschlossen ist.

Danke

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Power Querry aktualisierung in VBA Abfragen
21.03.2024 06:45:39
ralf_b
ich glaube da war was mit "Hintergrundaktualisierung zulassen" oder so ähnlich. Das dann ausschalten.
AW: Power Querry aktualisierung in VBA Abfragen
21.03.2024 11:42:16
Thomas
Ich hab das jetzt mal so versucht

Sub AktualisiereAlleAbfragen()


Dim rngZelle As Range


With ThisWorkbook
.Connections("Abfrage - MonateZusammengeführt").Refresh
End With

With tblDaten
For Each rngZelle In .UsedRange
rngZelle.Interior.Color = xlNone
Next
End With

Call AbfrageStatusAbru1fen

End Sub

Sub AbfrageStatusAbru1fen()
Dim con As WorkbookConnection
Dim abfrageName As String
Dim abfrageAktiv As Boolean

' Setze den Namen deiner Abfrage
abfrageName = "Abfrage - MonateZusammengeführt"

Do
' Iteriere durch die Verbindungen und finde die entsprechende Abfrage
For Each con In ThisWorkbook.Connections
If con.Name = abfrageName Then
' Überprüfe, ob die Abfrage gerade aktualisiert wird
abfrageAktiv = con.OLEDBConnection.Refreshing

' Status überprüfen und entsprechende Aktion durchführen
If abfrageAktiv Then
Else
Exit Do

End If

Exit For
End If
Next con
Loop
Call WerteBerechnenUndSpaltenAusblenden
End Sub


Wenn ich das im Einzelschritt durchgehe funktioniert es auch korrekt, wenn ich es aber "einfach" ablaufen lasse friert Excel komplett ein. Was mache ich da noch falsch?
Anzeige
AW: Power Querry aktualisierung in VBA Abfragen
21.03.2024 11:42:32
Thomas
Ich hab das jetzt mal so versucht

Sub AktualisiereAlleAbfragen()


Dim rngZelle As Range


With ThisWorkbook
.Connections("Abfrage - MonateZusammengeführt").Refresh
End With

With tblDaten
For Each rngZelle In .UsedRange
rngZelle.Interior.Color = xlNone
Next
End With

Call AbfrageStatusAbru1fen

End Sub

Sub AbfrageStatusAbru1fen()
Dim con As WorkbookConnection
Dim abfrageName As String
Dim abfrageAktiv As Boolean

' Setze den Namen deiner Abfrage
abfrageName = "Abfrage - MonateZusammengeführt"

Do
' Iteriere durch die Verbindungen und finde die entsprechende Abfrage
For Each con In ThisWorkbook.Connections
If con.Name = abfrageName Then
' Überprüfe, ob die Abfrage gerade aktualisiert wird
abfrageAktiv = con.OLEDBConnection.Refreshing

' Status überprüfen und entsprechende Aktion durchführen
If abfrageAktiv Then
Else
Exit Do

End If

Exit For
End If
Next con
Loop
Call WerteBerechnenUndSpaltenAusblenden
End Sub


Wenn ich das im Einzelschritt durchgehe funktioniert es auch korrekt, wenn ich es aber "einfach" ablaufen lasse friert Excel komplett ein. Was mache ich da noch falsch?
Anzeige
AW: Power Querry aktualisierung in VBA Abfragen
21.03.2024 12:07:53
Zahlendreher
Hallo!

Probiere es doch einmal so ohne die zusätzliche Schleife.
Sub AbfrageStatusAbru1fen()


Dim con As WorkbookConnection
Dim abfrageName As String
Dim abfrageAktiv As Boolean
Dim abfrageBackground As Boolean

' Setze den Namen deiner Abfrage
abfrageName = "Abfrage - MonateZusammengeführt"

' Iteriere durch die Verbindungen und finde die entsprechende Abfrage
For Each con In ThisWorkbook.Connections
If con.Name = abfrageName Then
abfrageBackground = con.OLEDBConnection.BackgroundQuery
con.OLEDBConnection.BackgroundQuery = False
con.Refresh
con.OLEDBConnection.BackgroundQuery = abfrageBackground
End If
Next con

Call WerteBerechnenUndSpaltenAusblenden

End Sub


Beste Grüße
Anzeige
AW: Power Querry aktualisierung in VBA Abfragen
21.03.2024 14:09:14
Thomas
Hi, das klappt super, vielen Dank dafür!

Kannst du mir noch etwas erklären was da genau passiert? Das ist mir noch nicht ganz klar.

Ich hab es noch mit einer kleinen UserForm mit einer entsprechenden Warten meldung ergänzt und so klappt es ganz gut.
AW: Power Querry aktualisierung in VBA Abfragen
21.03.2024 17:41:37
Zahlendreher
Hallo!

Also grundsätzlich gehst du mit der For-Schleife durch alle Verbindungen die es gibt und wenn die Verbindung zu deiner Variable abfrageName passt, geht es weiter im Code.
Mit abfrageBackground = con.OLEDBConnection.BackgroundQuery fragst du ab, wie bei deiner Abfrage die "Hintergrunddaten zulassen" eingestellt (Ein/Aus) sind und speicherst es in die Variable abfrageBackground.
Danach werden die Hintergrunddaten deaktiviert, um das bekannte Problem der Aktualisierung zu umgehen.
Jetzt wird die Abfrage aktualisiert mit con.Refresh.
Zum Schluss werden die "Hintergrunddaten zulassen" wieder auf deinen von dir definierten Wert gesetzt (Ein/Aus).

Hoffe du kennst dich jetzt aus 😉.

Beste Grüße
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige