Comment VBA fonction de rappel lorsque XMLHTTP onTimeOut?

Je suis en train d'essayer d'obtenir des données xml à partir du serveur vers excel, puis j'ai écrit un sendRequest la fonction à appeler dans excel

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

Lorsque le serveur web de la difficulté, ne peut pas se connecter ou ne peut pas trouver, excel ne répond pas, c'était horrible! Pour éviter cela, je pense que nous devrions mettre en timeOut. Ce sont mes fonction:

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

Normalement, lorsque XMLHTTP's délai d'attente se produit, événement OnTimeOutMessage sera exécuté (référence #1, #2). Mais comme dans mon test, OnTimeOutMessage est exécutée dès le début de sendRequest()

Comment utiliser la fonction de rappel lorsque Msxml2.ServerXMLHTTP.6.0 demande de délai?

Merci pour votre aide!

Approche Possible ici: dailydoseofexcel.com/archives/2006/10/09/async-xmlhttp-calls
Merci!!!! mais je ne trouve pas Async solution. Je suis juste voulez utiliser la fonction de Rappel lorsque xmlhttp sur le délai d'attente. J'ai une petite raison de le faire, parce que mon serveur est faible, il sera Connection refused si j'envoie la demande tant de sendRequest - Excel dans le même temps.
Si vous ne voulez pas excel pour le verrouiller en place pendant que votre xmlhttp est en attente d'une réponse, alors vous aurez à utiliser des appels asynchrones. Vous pouvez l'utiliser pour traiter les événements.

OriginalL'auteur Davuz | 2012-07-10

Leave a Reply

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *