warten auf refresh Datenverbindung
27.08.2019 08:14:53
Mike
ich rufe über ein Workbook_Open folgendes Makro auf
Private Sub Workbook_Open()
Call UpdatePowerQueries 'Datenabfragen starten
With ThisWorkbook.Sheets("Tabelle 1")
.Columns("D:D").ColumnWidth = 10
.Columns("K:K").Hidden = True
End With
End Sub
über Call wird dann dieses Makro zur Datenaktualisierung aufgerufen
Public Sub UpdatePowerQueries()
Dim lTest As Long, Datenverbindung As WorkbookConnection
On Error Resume Next
For Each Datenverbindung In ThisWorkbook.Connections
lTest = InStr(1, Datenverbindung.OLEDBConnection.Connection, "Provider=Microsoft.Mashup. _
OleDb.1", vbTextCompare)
If Err.Number 0 Then
Err.Clear
Exit For
End If
If lTest > 0 Then Datenverbindung.Refresh
' Application.CalculateUntilAsyncQueriesDone
Next Datenverbindung
' Do
' DoEvents
' Loop Until Application.CalculationState = xlDone
End Sub
Alle bisherigen Lösungsansätze (DoEvents, Application.CalculateUntilAsyncQueriesDone, Loop Until Application.CalculationState = xlDone) haben nicht dazu geführt, dass die Anpassung der Columns aus dem Start Makro greifen.
Das Makro läuft durch obwohl die Datenaktualisierung noch nicht abgeschlossen ist und auf Grund der Datenaktualisierung werden die Anpassung der Columns wieder überschrieben.
Zu allem Überfluss erhalte ich nun auch noch eine Fehlermeldung "Unerwarteter Fehler" mit dem Inhalt
Error Message:Ausnahme von HRESULT: 0x800A03EC
welche aber nur erscheint wenn das Makro das erste mal ausgeführt wird. Starte ich QueryUpdate _ danach erneut manuell gibt es keine Fehlermeldung. Soweit ich das eingrenzen konnte wird die Fehlermeldung ausgegeben bei
Datenverbindung.Refresh
Kann jemand bei dem Problem helfen bzw. hat einen praktikablen Lösungsansatz?Mir würde jetzt nur noch ein Wait einfallen dass ich in das Startmakro einbaue aber eigentlich müsste das doch auch ohne funktionieren.
Gruß
Mike