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は1回しか設定されません。設定されていない場合は、ループを繰り返し、何かであるかどうかを確認しますが、呼び出されるのは1回だけです。より良い方法は、要素をチェックして、要素が存在するまでループすることです。これは、ページを読み込むことができるためですが、DBからプルする要素は0.5秒ほど長くかかります。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 に答える