2012-02-24 97 views
2

我發現下面的代碼位已經改變了我的用途,唯一的問題是如果網站沒有給出失敗的返回或成功的代碼永遠不會結束。 (如果網站掛IE)定時執行一個函數/命令

有沒有什麼辦法可以在「HttpRequest.send」命令後設置超時。所以如果30秒後沒有響應,它會將其標記爲失敗並繼續前進?

 Set HttpRequest = CreateObject("Msxml2.XMLHTTP") 
    HttpRequest.open "HEAD", "http://example.com/", False 
    On Error Resume Next 
    HttpRequest.send 
    If Err.Number <> 0 Then 
    WScript.Echo "Error : " & Err.Number & ": " & Err.Description 
    Else 
    WScript.Echo "HTTP status: " & HttpRequest.status & " " _ 
     & HttpRequest.statusText 
    End If 

歡呼

哦,這是VBA

亞倫

+0

它似乎不能在此設置超時。如果網站沒有正確響應,是否有人會有一個解決方案在大約30秒後超時? – DevilWAH 2012-02-24 13:15:52

+0

您是否看到http://www.dailydoseofexcel.com/archives/2006/10/09/async-xmlhttp-calls/? – Fionnuala 2012-02-24 14:30:38

回答

2

切換到"Msxml2.ServerXMLHTTP.3.0"那麼你可以設置多個條件超時。 http://msdn.microsoft.com/en-us/library/windows/desktop/ms760403(v=vs.85).aspx

+0

當我嘗試使用此方法時,我無法創建活動x對象。 – DevilWAH 2012-02-24 17:14:42

+0

這可能是因爲我正在運行64位辦公室?或者你能否爲什麼我不能得到這個工作? – DevilWAH 2012-02-25 15:52:39

+0

現在我遇到了代理設置問題。即我需要使用與在IE中運行相同的代理服務器。使用Msxml2.XMLHTTP而不是「服務器」? – DevilWAH 2012-02-27 16:18:22