VBA MSXML2.ServerXMLHTTP 响应文本是一个 HTML 页面

Mat*_*ttB 3 xml automation vba dom

我一直在环顾四周,但找不到任何方法来做我在这里想做的事情。甚至可能不可能,但我正在使用 MSXML2 驱动程序连接到网页。我得到的响应文本只是网页的 HTMl。不完全是我想要的,但我可能可以使用它。从那里,我想尝试将 HTML 文档对象设置为该响应文本,因为它只是一个 HTML 页面,但我遇到了类型不匹配的问题。我不确定这是否会让我更接近解决我的问题,但我认为值得在这里提问。这是我在做什么:

Sub GetResponseText()
    Dim Document as HTMLDocument
    Dim xmlHTTP As MSXML2.ServerXMLHTTP
    Set xmlHTTP = New MSXML2.ServerXMLHTTP
    xmlHTTP.Open "POST", "http://SomeServerName.dev/SomePage.Aspx", False, "User", "Password"
    xmlHTTP.send "Doesn't matter what I put here, response always the same"
    Set Document = xmlHTTP.responseText   <----- No dice.  Type mismatch here.
Run Code Online (Sandbox Code Playgroud)

所以,正如我所说,我什至不确定这是否会奏效。只是想我会登记。我正在尝试做的概述是这是一个内部应用程序,我正在尝试为我工作的公司填写。我在等待 AJAX 完成尝试直接自动化 HTML 的请求时运气不佳,所以我想知道这样的事情是否会有所帮助。有什么想法吗?

San*_*osh 5

您可以使用CreateObject("htmlfile")和分配 xmlhttp 响应文本来创建 html 文档。

Sub GetResponseText()

    Dim Document As HTMLDocument
    Dim xmlHTTP As MSXML2.ServerXMLHTTP
    Set xmlHTTP = New MSXML2.ServerXMLHTTP
    xmlHTTP.Open "POST", "http://SomeServerName.dev/SomePage.Aspx", False, "User", "Password"
    xmlHTTP.send "Doesn't matter what I put here, response always the same"

    Dim doc As Object
    Set doc = CreateObject("htmlfile")
    doc.body.innerHTML = xmlHTTP.responseText
    debug.print doc.body.innerHTML


End Sub
Run Code Online (Sandbox Code Playgroud)