ひとつのWebBrowserで数回のDocumentCompleteが発生します。
Form_Load時(1回目)
Command1_Click時(2回目)
Command2_Click時(3回目A,3回目B)
という処理なのですが、これを同一のプロシージャで分けるには
どのようなやり方がいいのでしょうか?
> ひとつのWebBrowserで数回のDocumentCompleteが発生します。
ですね。例えば、フレームを使ったWebページ等では、
フレームごとに発生する事になっていますし。
> これを同一のプロシージャで分けるには
> どのようなやり方がいいのでしょうか?
…? すみません、質問の意味が理解できません。m(_ _)m
説明不足で申し訳ありません。
> これを同一のプロシージャで分けるには
とは、
Private Sub WebBrowser1_DocumentComplete()
1回目:(Form_Load時のDocumentComplete)
2回目:(Command1_Click時)
3回目:(Command2_Click時)
End Sub
とうようにあるので、2回目の処理の前に1回目の処理が再度行われてしまうのですがどうしたらいいのでしょうか?
まだ、意味が分かりませんよ。
Form_Load イベント(1回目)は1回しか発生しないですよ。
だから、 Command1_Click イベント(2回目)時に
Form_Load イベント(1回目)を発生させるような処理を書いているのでは?
サンプルコード(少なくとも Command1_Click の処理内容)を
載せるべきだと思いますけど。
Private 変数などを用意して、
Form_Load
Command1_Click
Command2_Click
イベントの最初にその変数に固有の値をセットして、
WebBrowser1_DocumentComplete イベントで
その変数を見て、分岐させれば良いのでは?
何度も申し訳ありません。失礼致しました。
Private Sub Form_Load()
intFlag = 0
With wbrTest
.Navigate2 "(URL)"
Do While .Busy = True And .ReadyState <> READYSTATE_COMPLETE
DoEvents
Loop
.Document.Forms(0).elements(3).Click
Do While .Busy = True And .ReadyState <> READYSTATE_COMPLETE
DoEvents
Loop
End With
End Sub
Private Sub cmdTest_Click()
Dim objA As Object
intFlag = 1
With wbrTest
Set objA = .Document.frames(0).Document.getElementsByTagName("A")
objA(6).Click
Do While .Busy = True And .ReadyState <> READYSTATE_COMPLETE
DoEvents
Loop
End With
End Sub
Private Sub wbrTest_DocumentComplete(ByVal pDisp As Object, URL As Variant)
Dim objTable As Object
If intFlag = 1 Then
Set objTable = wbrTest.Document.frames(1).frames(1).Document.getElementsByTagName("TABLE")
txtForm.Text = objTable(0).rows(1).cells(0)
End If
End Sub
としたのですが、「Withブロック変数〜」のエラーが出てしまいます
エラーは何処で出るのでしょうか?
編集 削除