几周前我刚拿起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(&#34; a&#34;)会返回一个空集合,或者偶尔会抛出运行时错误91或438.我已经搜索了我能想到的每一个可能有一个组合的组合解决方案我可以适应使用但到目前为止没有这样的运气。
在点击链接后,我有更多的功能可以构建到这个中,但我想在知道如何访问该链接后,我应该很好地访问这些页面上的任何其他内容。这个语言还是新手,并且不一定知道我在做什么,希望我没有错过任何明显的错误,所以你给出的任何建议都会有所帮助。
答案 0 :(得分:1)
例如:
TheFrame.contentDocument.getElementsByTagName("a")