Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

QueryTables aktualisieren


Betrifft: QueryTables aktualisieren von: FrageHans
Geschrieben am: 08.04.2018 14:23:10

Hallo zusammen,

leider läuft mein Code nicht durch bzw. er führt dazu, dass sich Excel aufhängt und das Dokument wiederherstellen möchte (Excel 2016).



Luschi hatte mir schon einen Tipp gegeben mit DoEvents. Leider hilft das nicht weiter.

Sub Refresh()
    Dim wS As Worksheet
    Dim qry As QueryTable
    For Each wS In ThisWorkbook.Worksheets
        For Each qry In wS.QueryTables
            qry.Refresh BackgroundQuery:=False
            DoEvents
        Next qry
    Next wS
End Sub

Es werden ca. 1250 Queries aktualisiert (Webanfragen). Daher muss es eine aufeinanderfolgende Aktualisierung sein. Gibt es performantere Codes oder gibt es andere Ideen? Ich habe schon versucht den Speicher im Ram zu vergrößern, da ich vermutete, dass der Rechner zu wenig Ressourcen z.V. hat.

Ich würde gerne auch ein regelmäßiges Speichern in die Schleife einbauen.

Ein Traum wäre das ganze in eine Art Cloud zu legen, damit ich nicht selbständig immer aktualisieren muss, sondern es automatisch passiert (quasi realtime).

Vielen Dank für eure Hilfe am sonnigen Sonntag.

Beste Grüße

  

Betrifft: AW: QueryTables aktualisieren von: Bernd Kiehl
Geschrieben am: 08.04.2018 16:35:52

Hi,
ungetestet, versuche mal das hier ...

Sub WebabfrageAktualisieren()
       Dim objQueryTable As QueryTable, lstObj As ListObject
       Dim objWorksheet As Worksheet
       For Each objWorksheet In ThisWorkbook.Worksheets
           For Each objQueryTable In objWorksheet.QueryTables
               'dieser For-Schleife wird nie ausgeführt
               Call objQueryTable.Refresh(BackgroundQuery:=False)
           Next
      On Error Resume Next
     For Each lstObj In objWorksheet.ListObjects
        'diese aber schon
        Call lstobj.QueryTable.Refresh(BackgroundQuery:=False)
     Next lstobj
     On Error Goto 0
           
       Next
       Call MsgBox("Habe fertig", vbInformation, "Info")
   End Sub
Gruß Bernd


  

Betrifft: AW: QueryTables aktualisieren von: Martin
Geschrieben am: 08.04.2018 18:31:15

Hallo Bernd,

vielleicht wäre es sinnvoll in der Statusleiste eine Rückmeldung zu geben bei welchem QueryTable sich Excel gerade befindet. Vielleicht hängt sich Excel immer beim selben QueryTable auf:

Sub Refresh()
    Dim wS As Worksheet
    Dim qry As QueryTable
    For Each wS In ThisWorkbook.Worksheets
        For Each qry In wS.QueryTables
            Application.StatusBar = qry.Name
            qry.Refresh BackgroundQuery:=False
            DoEvents
        Next qry
    Next wS
    Application.StatusBar = False
End Sub
Viele Grüße

Martin


Beiträge aus dem Excel-Forum zum Thema "QueryTables aktualisieren"