Wie VBA-Callback-Funktion bei XMLHTTP onTimeOut?

Ich versuche, XML-Daten vom Webserver zu erhalten, um zu übertreffen, dann schrieb ich einsendRequest Funktion in Excel aufrufen

=sendRequest("http://abb.com/index.php?id=111")

Wenn ein Webserver Probleme hat, keine Verbindung herstellen kann oder nicht findet, Excel nicht reagiert, war es schrecklich! Um dies zu vermeiden, sollten wir timeOut setzen. Das sind meine Aufgaben:

Function sendRequest(Url)
    'Call service
    Set XMLHTTP = CreateObject("Msxml2.ServerXMLHTTP.6.0")

    'Timeout values are in milli-seconds
    lResolve = 10 * 1000
    lConnect = 10 * 1000
    lSend = 10 * 1000
    lReceive = 15 * 1000 'waiting time to receive data from server
    XMLHTTP.setTimeOuts lResolve, lConnect, lSend, lReceive

    XMLHTTP.OnTimeOut = OnTimeOutMessage 'callback function

    XMLHTTP.Open "GET", Url, False

    On Error Resume Next
    XMLHTTP.Send
    On Error GoTo 0

    sendRequest = (XMLHTTP.responseText)
End Function

Private Function OnTimeOutMessage()
    'Application.Caller.Value = "Server error: request time-out"
    MsgBox ("Server error: request time-out")
End Function

Normalerweise wennXMLHTTP's Timeout tritt ein, EreignisOnTimeOutMessage wird ausgeführt (Referenz# 1, # 2). Aber wie inmein Test, OnTimeOutMessage wird direkt am Anfang von ausgeführtsendRequest()

Verwendung der Rückruffunktion beiMsxml2.ServerXMLHTTP.6.0 Anfrage ist Timeout?

Danke für deine Hilfe!

Antworten auf die Frage(2)

Ihre Antwort auf die Frage