更改子iFrame问题中的数据 - 无法获取DOM对象

时间:2010-10-09 20:26:52

标签: html vba dom iframe

出于某种原因,我正在尝试解析此网站:http://www.vblandrecords.com/index.aspx。 我目前正在尝试点击Document type标签,然后更改From date值。

我想我可以使用以下代码在VBA中完成它:

Option Explicit
Public WithEvents ieObj As InternetExplorer

Public Sub Launch()

    Set ieObj = CreateObject("InternetExplorer.Application")
    ieObj.Visible = True
    ieObj.navigate ("http://www.vblandrecords.com/index.aspx")

    While ieObj.readyState <> READYSTATE_COMPLETE

    Wend

    Dim TmpDOMObj, Frame As Object

    Set TmpDOMObj = ieObj.document.getElementById("tbMaintd3")

    TmpDOMObj.Click

    Set Frame = ieObj.document.getElementById("tbMain_frame3")
    Set TmpDOMObj = Frame.contentWindow.document.getElementById("txtStart")

    TmpDOMObj.Value = "10/1/2010"    

End Sub

但是,我得到了一个运行时错误91 - 没有设置对象变量。

我做了一些研究,看来tbMain_frame3下的树结构只有在我点击tbMaind3标签后才会形成,我在MSIE开发者工具中看到它,但我看不到它在我的剧本中。

我认为这与我读过的iFrame安全问题有关,但保留在第一个标签上并处理tbMain_frame0的工作完全正常。

任何人都可以给我一些关于发生了什么以及如何处理这个页面的提示吗?

感谢。

1 个答案:

答案 0 :(得分:1)

这可能不是最好的主意,但你可以等待错误消失:

Dim test
On Error Resume Next

Do While True
    test = Frame.contentWindow.Document.getElementById("txtStart").Value
    If Err.Number = 0 Then
        Exit Do
    ElseIf Err.Number > 0 And Err.Number <> 91 Then
        Exit Sub
    End If

    Err.Clear
Loop