getHTTP与(excel)VBA?

sea*_*ver 7 excel vba httpwebrequest excel-vba

我正在搜索excel VBA宏的查询,以获取网页html代码作为字符串.我找到了getHTTPrequest的一些来源,但我无法注册.net framwork system.dll或链接它.

那里有任何新手友好的片段吗?;-) 谢谢!

ash*_*awg 6

这是一个紧凑的函数,它返回几乎任何指定 URL 的响应文本,例如网页的 HTTP 源代码,或来自JSON API 的响应文本。


后期绑定:( 不需要参考)

Public Function getHTTP(ByVal url As String) As String
  With CreateObject("MSXML2.ServerXMLHTTP.6.0") 
    .Open "GET", url, False: .Send
    getHTTP = StrConv(.responseBody, vbUnicode)
  End With
End Function
Run Code Online (Sandbox Code Playgroud)

早期绑定:

如果您需要重复调​​用该函数(例如在循环中),最好将其用作早期绑定函数:

  1. 添加对 XML 库的引用

    Tools? References? 选择 Microsoft XML, v6.0 (或您列出的最高版本)

  2. 声明一个模块级变量:(将此行放在模块的顶部)
    (创建新 VBA 模块的快捷方式:Alt+ F11? I? M

    Dim msXML As XMLHTTP60

  3. 在函数内,如果变量尚未设置,则仅创建 XML 对象

     Public Function getHTTP(ByVal url As String) As String
       If msXML Is Nothing Then Set msXML = New XMLHTTP60
       With msXML
         .Open "GET", url, False: .Send
         getHTTP = StrConv(.responseBody, vbUnicode)
       End With
     End Function
    
    Run Code Online (Sandbox Code Playgroud)

示例用法:( 对于任一方法)

要获取此页面的 HTML 源代码:

Debug.Print getHTTP("/sf/ask/57232171/")
Run Code Online (Sandbox Code Playgroud)

? 笔记!

如果您尝试使用此类方法或其他方法(即 Excel 的)连接到不安全的 url,许多应用程序(包括MS Office)现在将返回错误WEBSERVICE

为避免此问题,请尽可能使用HTTPS://代替HTTP://