- 締切済み
VBAによるIE操作について
VBAでIEを操作し、PHPで開発されているMoodleというe-learningのサイトを操作しようと思っています。 概ね自分の思い通りに動くように作れたのですが、一点だけ問題が発生してしまいました。 (1)Submitのボタンを押して、(2)ページを読み込み待ち、(3)次のページのSubmitのボタンを押すという処理がうまく行きません。 エラーが出るのが、(3)のボタンを押したつもりになって、次の作業に行ってしまっていました。 (2)のページの読み込み待ちがうまく行かず、(3)のボタンを押したつもりになってしまい、次の作業でエラーを起こす、そんな次第です。 (2)のページの読み込みは下記の様に組んでます。 (4)の様に組んでも結果は一緒でした。 あとページが変わるまで、ボタンを押し続ける様に組むと、サーバーが落ちました。(ボタンが無くても押していることができるということだったので、試してみました。コードは残していなかった。) ちなみにボタンを押すコードは(5)です。 PHPの読み込みを待っていないとかそんな原因ではないかと思うのですが、解決できないでしょうか。 (2) Function IEwait(ByRef objIE As Object) Do While objIE.readystate <> 4 DoEvents Loop End Function (4) Do Until objIE.Busy = False WScript.sleep(250) Loop' (5) Public Function IEButtonClick(ByRef objIE As Object, buttonValue As String) Dim objInput As Object For Each objInput In objIE.document.getElementsByTagName("INPUT") If objInput.Value = buttonValue Then objInput.Click Exit Function End If Next End Function
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- ap_2
- ベストアンサー率64% (70/109)
"無条件に"スリープを入れるか、URLを確認(もしくはボタンがあるか確認)→スリープを繰り返して待つ形で対処できると思います。 PHPはサーバ側で処理され、ブラウザからみたら普通のページと同じです。 たぶん・・・、javascriptでページ移動してるのでは? 最近は非同期で動かすことも多く、その場合はbusyになりません。ページ読み込みが始まる前のjavascript処理中に待ちループを抜けてしまうのが原因じゃないかと思います。