将对象设置为HTML iFrame并访问其文档中的元素

将对象设置为HTML iFrame并访问其文档中的元素,html,vba,iframe,xmlhttprequest,Html,Vba,Iframe,Xmlhttprequest,我正在尝试刮取一个内部网网站(由于内部网我无法共享链接,对此表示抱歉),其结构如下: <html> <body> <iframe id="myIframe">#document</iframe> </body> </html> Dim test2 As Object Set test2 = oHtml.getElementById("myIframe") 但是,如果我尝试在VBA中执行同样

我正在尝试刮取一个内部网网站(由于内部网我无法共享链接,对此表示抱歉),其结构如下:

<html>
    <body>
        <iframe id="myIframe">#document</iframe>
    </body>
</html>
Dim test2 As Object
Set test2 = oHtml.getElementById("myIframe")
但是,如果我尝试在VBA中执行同样的操作,我将无法执行,因为对象
settest2=oHtml.getElementById(“myIframe”)
Nothing

我定义
test2
的方法如下:

首先,我通过XMLHTTP请求获得了该网页的HTML文档:

Dim XMLHTTP As Object, oHtml As Object, pontod As Object

    On Error Resume Next
    Set oHtml = New HTMLDocument
    With CreateObject("WINHTTP.WinHTTPRequest.5.1")
        .Open "GET", websiteLink, False
        .send
        oHtml.body.innerHTML = .responseText
    End With
因此,我将
test2
声明为对象,并尝试将其设置为:

<html>
    <body>
        <iframe id="myIframe">#document</iframe>
    </body>
</html>
Dim test2 As Object
Set test2 = oHtml.getElementById("myIframe")
同样,问题是上面的
test2
设置为
Nothing
,而如果我尝试在JavaScript上(直接在网页上)执行同样的操作,则情况并非如此

这可能取决于我在VBA中获得的HTML文档来自
WINHTTP.WinHTTPRequest.5.1
请求这一事实吗?有没有人有办法解决这个问题并获得
myIframe
的文档


另外,我明白“在黑匣子上”工作是不好的,但不幸的是这是一个内部网络;请毫不犹豫地询问您是否需要任何其他信息(只要我能提供:)

您是否等待oHTML中的文档加载和呈现


您还应该验证从WinHTTPRequest获得的源代码是否与您在javascript中使用的源代码相同。

您是否等待
oHTML
中的文档加载和呈现?您还应该验证从WinHTTPRequest获得的源代码是否与您在javascript中使用的源代码相同。感谢@TimWilliams提供的提示。我一直在等待加载文档(使用通常的
Do而不是ready
),您是否认为一个好的平等性测试可能是在使用
internetexplorer.application
浏览页面后,将我的
oHTML
browseObject.document
进行比较?这可能有效。或者使用fiddler来比较这两种反应。很难说清楚,因为我猜你简化了问题中的HTML…@TimWilliams是的,简化了。非常感谢您提供的提示,我将尝试这样做,并将信息反馈给您。@TimWilliams刚刚通过VBA试用了internet explorer应用程序对象,并得到了正确的结果。因此,我猜想XMLHTTP请求给出的HTML响应与我在浏览器上看到的不一样(这是我用
appIE.document
得到的文档)。请你写下你的提示作为回答,我会接受的?非常感谢你的帮助。谢谢蒂姆。事实上,我从WinHTTPRequest获得的源代码并不等同于使用JavaScript的源代码。因此,我获得了一个浏览器对象(
Set-appIE=CreateObject(“internetexplorer.application”)
appIE.Navigate-myLink
Set-HTMLsrc=appIE.document
)的良好源代码,并获得了
HTMLsrc.frames(“myiFrame”).document中的元素。