【问题标题】:Excel VBA send to MSXML2.XMLHTTP does not workExcel VBA 发送到 MSXML2.XMLHTTP 不起作用
【发布时间】:2018-02-25 02:55:06
【问题描述】:

我在 excel VBA 中有以下代码,直到昨天它都运行良好。 现在尝试检查 URL 时失败了。但 URL 确实存在!

它失败了:oXHTTP.send(它去有错误)

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

可能是什么问题?

谢谢

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    考虑在您的错误句柄块中添加一条消息,该消息会提供更多信息问题,可以通过使用MSXML2.ServerXMLHTTP 而不是MSXML2.XMLHTTP 来解决。

    查看differences 的 SO 帖子。

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-22
      • 2021-12-20
      • 2013-05-28
      • 1970-01-01
      • 2014-12-10
      • 2017-12-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多