访问具有VBA Web自动化的嵌入式HTML元素



我几周前刚刚捡起了VBA,我正在研究一个项目,该项目将能够从网页上检索信息。像以前一样,任务最多可以手动完成5个小时。我正在尝试单击位于嵌入式网页上的.JSP页面上的链接,该网页使用JavaScript在帧中从Excel中运行的VBA脚本在框架内导航。不幸的是,该网页有关于从外部来源链接的严格规则,但是网页层次结构是这样的:

<html>
    <head></head>
    <frameset>
        <frame name="DontCare1"></frame>
        <frameset>
            <frame name="OtherFrame1"></frame>
            <frame name="FrameName">
               #document<html></html> 
               <!--Inspect Page shows that the html is inside the #document tag-->
            </frame>
            <frame name="OtherFrame2"></frame>
        </frameset>
        <frame name="DontCare2"></frame>
    </frameset>
</html>

现在,我知道我的代码已设置为正确操纵网页,因为在到达这一点之前,它可以访问标准页面,并且可以通过输入其信息并单击提交来登录用户,因此我相当确定所有的库,参考是顺序的。

我有一个糟糕的方法来获取最深的框架,如下所示:

Dim theFrame As HTMLIFrame
Dim l2 As Variant, l3 As Variant, l4 As Variant
For Each l2 In .Document.getElementsByTagName("frameset")
            For Each l3 In l2.getElementsByTagName("frameset")
                For Each l4 In l3.getElementsByTagName("frame")
                    If l4.Name = "FrameName" Then
                        Set theFrame = l4 ' Find HTML page in this frame
                    End If
                Next l4
            Next l3
        Next l2

我已经验证了它正在将框架设置为正确的帧。现在我认为类似:

For Each l2 In theFrame.getElementsByTagName("a")
            If l2.href="LinkIWantToClick" Then
                l2.Click
                Exit For
            End If
        Next l2

可以正常工作,但是theframe.getElementsbytagname(" a")返回一个空的集合或偶尔会抛出运行时错误91或438。我几乎搜索了我可以想到的所有组合到目前为止还没有运气。

单击链接后,我有更多的功能可以构建此功能,但是我想在我知道如何访问该链接后,我应该很好地访问这些页面上的其他任何内容。仍然对这种语言陌生,不一定知道我在做什么,希望我不会错过一个明显的错误,所以您可以给出的任何建议都会有所帮助。

蒂姆·威廉姆斯(Tim Williams)是对的,框架中将嵌入另一个文档。我遇到了类似的问题,能够使用 contentDocument

访问所需的元素。

例如:

TheFrame.contentDocument.getElementsByTagName("a")

最新更新