2

*使用带有 vba 的 HTML 对象库 *(CAS 设置为浏览器实例 (shdocvw))

Set HTMLDoc = CAS.document.frames("MainFrame").document 'pull the main frame    

Do Until Not HTMLDoc Is Nothing
DoEvents
Loop

我认为这是不正确的,因为它只会设置一次 HTMLDoc,如果它什么都不是,它会一遍又一遍地循环自己,检查它是否存在,但因为它只被调用一次。恕我直言,更好的方法是检查元素并循环直到元素存在,因为页面可以加载,但我从数据库中提取的元素需要多半秒左右。我只是不确定如何编写循环来继续设置 htmldoc,然后继续检查其中的元素是否不是什么。(重点是即使我的等待计时器没有等待足够长的时间,它也不应该在元素存在之前继续进行)

4

1 回答 1

2

如果您想等待特定元素:

    Dim el As Object

    Do
        Set el = Nothing
        On Error Resume Next
        Set el = CAS.document.frames("MainFrame").document.getElementById("idHere")
        On Error GoTo 0
        DoEvents
    Loop While el Is Nothing

不过,您可能希望建立最大等待时间,因此如果由于某种原因该元素从未出现,您就不会无休止地循环。

于 2012-10-10T21:41:23.437 回答