よく、私の例だと、リンクやボタンのオブジェクトを探して
.Clickで押したように動作させていますが、
javaScriptを直接使っているようなサンプルを最近(前に)見かけました。
下記 はてな人力検索の回答、
VBAでHTMLのページ内でJavaScriptのConfirm関数で表示されるメッセージのボタンを自動的にクリックするには
で見つけた、
objIE.Document.Script.setTimeout "javascript:document.getElementById('popOK').click()", 200
が、いい感じで使えそうです。
前回の
a href="#" OnClick="javascript:send();return false;" title="ログイン"
の場合だったら、
objIE.Document.Script.setTimeout "javascript:send();return false;", 200
みたいに書くと、
直接プログラム内で、HTML上のjavascriptの関数をコール可能で、
いつもみたいに探してから.Clickよりも、簡単かもしれません。
(※いつもみたいに探すには→ http://d.hatena.ne.jp/ken3memo/20110626/1309072419 をみてください)
場面によって使い分けてください。
ログイン処理のjavascriptを直接起動
a href="#" OnClick="javascript:send();return false;" title="ログイン"
ログインボタンを押すと、
onClick
が走る
だったら、ボタンなんか押さないで、OnClickの内容をそのまま実行すればいいのでは?
ってことで、
.Script.setTimeout "javascript:send();return false;", 200
で、そのまま素直に使ってみた。
Dim objIE '変数を定義します。 Set objIE = CreateObject("InternetExplorer.Application") 'オブジェクトを作成します。 objIE.Visible = True '可視、Trueで見えるようにします。 '処理したいページを表示します。 objIE.Navigate "http://www.ipat.jra.go.jp/" 'ページの表示完了を待ちます。 While objIE.ReadyState <> 4 Or objIE.Busy = True '.ReadyState <> 4の間まわる。 WScript.Sleep 100 '0.1秒待つ 1000で1秒 Wend 'INET-ID(name=inetid)にセットする。 objIE.Document.getElementsByName("inetid")(0).Value = "S999999PC" 'ログインボタンの処理を実行する objIE.Document.Script.setTimeout "javascript:send();return false;", 200
いつものテスト動画
テスト結果と作成過程の動画 http://www.youtube.com/watch?v=vzxBNfZDqUU です
www.youtube.com
↑、こんな感じで、直接コードを呼んだ方が簡単な場合もあったり。
※.Script.setTimeout で 実行ってのが、なんだかなぁ、三流プログラマーの私にもわかるような .Script.Run と .Runみたいなメソッドやコール方法だともっと早く気がついたのに(ははは、たぶん気がつかないか...負け惜しみです)