HPの読み込み完了まで待つには?

解決


ゆたか  2005-08-28 18:41:51  No: 91839  IP: [192.*.*.*]

Obj.Busy = Trueを使いHPを読み込むまで待つ方法として

 Do While Obj.Busy = True
    DoEvents
 Loop

がありますがどうもこの記述では完全に待ちきれていない
ようなのです。この後にテキストへの自動入力があり
誤動作しています。

これ以外にHPの読み込みが完了するまで待つ方法を
教えて下さい。お願いします。

編集 削除
LESIA  2005-08-28 23:56:33  No: 91840  IP: [192.*.*.*]

Do While Obj.Busy = True
  DoEvents
Loop

Do While Obj.Document.ReadyState <> "complete"
  DoEvents
Loop

で、どうでしょうか。

編集 削除
ゆたか  2005-08-29 19:44:48  No: 91841  IP: [192.*.*.*]

ご教授ありがとうございます。

これって以下のやつと同意味ですよね
Do While Obj.Document.ReadyState = 4
   DoEvents
Loop

これは試してみたんですがイマイチなんですよ。
何かまちがってますかねぇ

あと当方の作ってるPGはフレーム2画面の
右側画面なんですよ。それでこういう記述に
なってるんですが何かやはりおかしいですか?

Do While Obj.Document.frames(1).Document.ReadyState = 4
   DoEvents
Loop

編集 削除
KG  2005-08-29 20:00:45  No: 91842  IP: [192.*.*.*]

4はcompleteと同じじゃなかったかな。

だから
Do While Obj.Document.ReadyState <> 4
   DoEvents
Loop

なのでは?

編集 削除
LESIA  2005-08-30 04:08:56  No: 91843  IP: [192.*.*.*]

4はREADYSTATE_COMPLETE定数の値で、Obj.ReadyStateが取る値です。
なので 
Do While Obj.ReadyState <> 4
   DoEvents
Loop
または
Do Until Obj.ReadyState = 4
   DoEvents
Loop
となります。

Obj.Document.ReadyStateが取る値は文字列なので
Do While Obj.Document.ReadyState = 4
   DoEvents
Loop
とした場合は、ReadyStateが数値4になることはありませんので
Loopを一度も回りません。

Do While Obj.Document.frames(1).Document.ReadyState = 4
   DoEvents
Loop
これも
Do While Obj.Document.frames(1).Document.ReadyState <> "complete"
   DoEvents
Loop
または
Do Until Obj.Document.frames(1).Document.ReadyState = "complete"
   DoEvents
Loop
ですね。

ReadyStateが"complete"じゃない間Loopするか、"complete"になるまで
Loopする訳です。

編集 削除
ゆたか  2005-08-30 19:05:35  No: 91844  IP: [192.*.*.*]

書かれていた通りに記述したらちゃんと動作しました。
助かりました。ありがとうございます。当方の勘違いでした。

編集 削除