Microsoft Excel

Herbers Excel/VBA-Archiv

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

VBA: Ende von Webabfragen


Betrifft: VBA: Ende von Webabfragen von: Bernd Kiehl
Geschrieben am: 25.10.2017 19:32:58

Hallo zusammen,

ich habe in meiner Mappe 12 Abfragen die ich mit RefreshAll über einen Button in einer UF starte. Die Abfragen dauern zusammen ca. 1 Minute.

Nun meine Frage: ich möchte am exakten Ende der Abfragen eine MsgBox aufrufen, die mir sagt, dass die Abfragen beendet sind.

Meine Versuche nach dem Befehl RefreshhAll eine MsgBox einzusetzen schlugen fehl, da sofort nach Start des Makros die MsgBox erscheint, aber die Abfragen noch nicht beendet sind.


  

Betrifft: AW: VBA: Ende von Webabfragen von: Nepumuk
Geschrieben am: 25.10.2017 21:07:10

Hallo Bernd,

ein Beispiel:

Public Sub Beispiel()
    Dim objQueryTable As QueryTable
    Dim objWorksheet As Worksheet
    For Each objWorksheet In ThisWorkbook.Worksheets
        For Each objQueryTable In objWorksheet.QueryTables
            Call objQueryTable.Refresh(BackgroundQuery:=False)
        Next
    Next
    Call MsgBox("Habe fertig", vbInformation, "Info")
End Sub

Gruß
Nepumuk


  

Betrifft: AW: VBA: Ende von Webabfragen von: Bernd Kiehl
Geschrieben am: 25.10.2017 21:54:04

Hallo Nepumuk,
schön von dir zu hören!
Wird ich gleich einbauen und testen.

Lieben Gruß
Bernd


  

Betrifft: AW: VBA: Ende von Webabfragen von: Bernd Kiehl
Geschrieben am: 26.10.2017 07:43:46

Hallo Nepumuk,

habe Code getestet, leider aktualisiert er nicht. Woran kann das liegen?

Lieben Gruß
Bernd


  

Betrifft: AW: VBA: Ende von Webabfragen von: Luschi
Geschrieben am: 26.10.2017 10:05:16

Hallop Nepumuk & Bernd,

habe gerade mal in Excel 2016 die Ergebnisse der gestriegen Fußball-Pokal-Spiele per
Webabfrage in die Tabelle geschrieben. Das Abfrageergebnis steht in einer formatierten Tabelle.
Diese QueryTables werden nicht von der allgemeinen For-Schleife durchlaufen, sondern
man muß die ListObjects der Tabelle abfragen:

Public Sub Beispiel()
    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
        For Each lstObj In objWorksheet.ListObjects
            'diese aber schon
            Call lstobj.QueryTable.Refresh(BackgroundQuery:=False)
        Next lstobj
        
    Next
    Call MsgBox("Habe fertig", vbInformation, "Info")
End Sub
Gruß von Luschi
aus klein-Paris


  

Betrifft: AW: VBA: Ende von Webabfragen von: Bernd Kiehl
Geschrieben am: 26.10.2017 10:11:05

Hallo Luschi,
Danke für deine Hilfe.
Leider bekomme ich Fehlermeldung und zwar hier:

Call lstObj.QueryTable.Refresh(BackgroundQuery:=False)
... mit dem Hinweis "Anwendungs- oder objektorientierter Fehler".

Wo hakt es?

Lieben Gruß
Bernd


  

Betrifft: AW: VBA: Ende von Webabfragen von: Luschi
Geschrieben am: 26.10.2017 10:22:46

Hallo Bernd,

sicher hast Du auch formatierte Tabellen in Deiner Arbeitsmappe, die nicht aus einer Webabfrage stammen.
Diese besitzen natürlich keine QueryTable-Property und müssen noch ausfiltert werden. Ich teste das mal.
Aber zuerst kannst Du ja so machen:


    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
Gruß von Luschi
aus klein-Paris


  

Betrifft: AW: VBA: Ende von Webabfragen von: Bernd Kiehl
Geschrieben am: 26.10.2017 10:38:24

Hallo Luschi,
die Datei bricht fast zusammen, Excel zeigt an "keine Rückmeldung".

LG Bernd