sea*_*ver 7 excel vba httpwebrequest excel-vba
我正在搜索excel VBA宏的查询,以获取网页html代码作为字符串.我找到了getHTTPrequest的一些来源,但我无法注册.net framwork system.dll或链接它.
那里有任何新手友好的片段吗?;-) 谢谢!
足够接近:如何使用VBA从Excel向服务器发送HTTP POST请求? - 甚至是Excel ;-)
只需使用GET请求:
objHTTP.Open "GET", URL, False
Run Code Online (Sandbox Code Playgroud)
MSDN:使用WinHttpRequest COM对象 - 使用Visual Basic检索数据
这是一个紧凑的函数,它返回几乎任何指定 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)
如果您需要重复调用该函数(例如在循环中),最好将其用作早期绑定函数:
添加对 XML 库的引用:
Tools? References? 选择 Microsoft XML, v6.0 (或您列出的最高版本)
声明一个模块级变量:(将此行放在模块的顶部)
(创建新 VBA 模块的快捷方式:Alt+ F11? I? M)
Dim msXML As XMLHTTP60
在函数内,如果变量尚未设置,则仅创建 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://。