我正在搜索 Excel VBA 宏的查询,以获取网页的 HTML 源代码作为字符串。
我找到了一些来源,getHTTPrequest
但我无法注册 .net 框架system.dll
或链接它。
谢谢!
我正在搜索 Excel VBA 宏的查询,以获取网页的 HTML 源代码作为字符串。
我找到了一些来源,getHTTPrequest
但我无法注册 .net 框架system.dll
或链接它。
谢谢!
足够接近:如何使用 VBA 从 Excel 向服务器发送 HTTP POST 请求?— 它甚至适用于 Excel ;-)
只需使用 GET 请求:
objHTTP.Open "GET", URL, False
这是一个紧凑的函数,它返回几乎任何指定 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
如果您需要重复调用该函数(例如在循环中),最好将其用作早期绑定函数:
添加对 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
要获取此页面的 HTML 源代码:
Debug.Print getHTTP("https://stackoverflow.com/q/817602")
️注意!
如果您尝试使用此类方法或其他方法(即 Excel 的方法)连接到不安全的 url,许多应用程序(包括MS Office
WEBSERVICE
)现在将返回错误。为避免此问题,请尽可能使用
HTTPS://
代替。HTTP://