2017-09-15 51 views
0

我在Excel VBA中有以下代码,并且它一直运行良好,直到昨天。 现在尝试检查URL时失败,但URL确实存在!Excel VBA发送到MSXML2.XMLHTTP不起作用

它失败在行:oXHTTP.send(它去haveError)

Function HttpExists(sURL As String) As Boolean 
Dim oXHTTP As Object 
Set oXHTTP = CreateObject("MSXML2.XMLHTTP") 

If Not UCase(sURL) Like "HTTP:*" Then 
    sURL = "http://" & sURL 
End If 

On Error GoTo haveError 
oXHTTP.Open "HEAD", sURL, False 
oXHTTP.send 
HttpExists = IIf(oXHTTP.status = 200, True, False) 
Exit Function 

haveError: 
    HttpExists = False 
End Function 

SURL如下,其中确实存在

http://www.google.com/finance/historical?q=COF&startdate=Jan+1%2C+2017&enddate=Dec+31%2C+2017&num=30&ei=WLQtWaAfiMOxAbeYutgE&output=csv

有什么可以问题?

感谢

回答

1

考虑增加你的错误处理块的消息赋予更翔实的问题可以通过使用MSXML2.ServerXMLHTTP,而不是MSXML2.XMLHTTP解决。

查看此用于SO发布的differences

Function HttpExists(sURL As String) As Boolean 

    Dim oXHTTP As Object 
    Set oXHTTP = CreateObject("MSXML2.ServerXMLHTTP") 

    If Not UCase(sURL) Like "HTTP:*" Then 
     sURL = "http://" & sURL 
    End If 

    On Error GoTo haveError 
    oXHTTP.Open "HEAD", sURL, False 
    oXHTTP.send 
    HttpExists = IIf(oXHTTP.Status = 200, True, False) 
    Exit Function 

haveError: 
    MsgBox Err.Number & " - " & Err.Description, vbCritical 
    HttpExists = False 
End Function 


Sub RunFct() 
    Dim output As Boolean 

    output = HttpExists("http://www.google.com/finance/historical?q=COF&startdate=Jan+1%2C+2017&enddate=Dec+31%2C+2017&num=30&ei=WLQtWaAfiMOxAbeYutgE&output=csv") 
    Debug.Print output 
End Sub 

输出在即时窗口

TRUE 
+0

它解决我的问题,谢谢:) – alon