- ベストアンサー
エクセルVBAでWEBの送信ボタンクリック
- エクセルVBAを使用してイントラネット上のWeb画面の送信ボタンをクリックする方法について教えてください。
- 現在、エクセルのデータ入力までは正常に動作しているが、送信ボタンをクリックして先に進むことができない問題が発生しています。
- SendKeysを使用して進めることはできるが、正当な修正方法があるか教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
#1 です。 >本来の修正方法をご教示いただきたいのです。 何を以って「本来」と仰るのか判然とはしませんが、「ごまかし」ではなくて「理ずくめ」というような意味合いでしょうか。。。 >イントラネットの仕様が若干かわったよう 1)VBE(Visual Basic Editor) の コードウィンドウ を表示しておきます。 2) >.document.forms(0).submit '送信ボタンクリック の行を選択し、[F9] キー を押下して ブレークポイント を置きます。 3)[F5] キー で、マクロ を走らせます。 4)ストップ した時点で、「objIE.document.forms(0)」を ウォッチ式 に追加します。 5)ウォッチウィンドウ の「値」をご覧になってみてください。 6)ここの値が「Nothing」になっていましたら、かなりの仕様変更でしょうか。 「forms(0)」で反応していたということは、html コード の中に <form> ~~~ </form> というような部分があったかと存じますが、この仕様変更により、「フォーム」ではなくて「JavaScript」によって「送信ボタンクリック」するようになったと思われます。 「送信ボタン」に関する html コード は、 <td onclick="xcs0010SearchClick();" onmouseout="BigOff(this);" onmouseover="BigOn(this);" class="Button Command" width="10%">送信</td> の部分ですが、日本語に直すと、 <セル開始(クリック したら [xcs0010SearchClick] 関数、マウス が離れるとこの セル に [BigOff] 関数適用、マウス が乗るとこの セル に [BigOn] 関数適用、この セル は [Button Command] クラス、セル幅 = 10%)>送信<セル終了> みたいなことになります。 ここで、目的の動作になるのは「クリック したら [xcs0010SearchClick] 関数」の部分ですが、html コード の中に <script type="text/javascript"> function xcs0010SearchClick() { ・・・・・・・・・・・・・・・・ } </script> みたいなところがないでしょうか。 この「・・・・・・・・・・・・・・・・」の部分が「送信」という セル を クリック したときに実行される スクリプト、つまり、元々の「フォーム の送信」に当たる動作になります。 function xcs0010SearchClick() { というようなことでしたら、前回答に書きましたように .navigate "javascript:xcs0010SearchClick();" でいけるかと存じますが、 function xcs0010SearchClick(hoge) { というように、[xcs0010SearchClick] 関数 に引数が指定されているような場合には、その引数(例の場合は「hoge」)に対する値を代入して .navigate "javascript:xcs0010SearchClick(値);" とする必要があります。 例えば、Yahoo! Japan の ホームページ には、[err] 関数というのが組み込まれていますが、 http://www.yahoo.co.jp/ の ページ を表示しておいて、アドレスバー に javascript:err(e); と入力して [Enter] すると Yahoo! Japan の ページ が消え、IE の ウィンドウ に「true」と表示されます。 アドレスバー に「javascript:err(e);」と入力して [Enter] を押下したのですから、「javascript:err(e);」という アドレス(URL)の ページ を開いたのと同じことになろうかと存じますので、 .navigate "javascript:err(e);" ということになります。 試しに、下記を実行してみてください。 With objIE .Visible = True .navigate "http://www.yahoo.co.jp/" While .Busy Or .ReadyState <> 4: DoEvents: Wend .navigate "javascript:err(e);" End With
その他の回答 (1)
- DOUGLAS_
- ベストアンサー率74% (397/534)
イントラネット では動くかどうか分りませんが。。。 >.document.forms(0).submit '送信ボタンクリック の部分を .navigate "javascript:xcs0010SearchClick();" としたらどうでしょうか?
お礼
大変ありがとうございました。 ばっちりです!!
お礼
ありがとうございます。 なかなか試す時間がとれずお礼が遅くなってしまいました。 おかげさまで >.document.forms(0).submit '送信ボタンクリック の部分を .navigate "javascript:xcs0010SearchClick();" に変えただけでちゃんと動いてくれました! わたしはHTMLだってほとんどわかっていないのにjavascriptですか・・・。 <script type="text/javascript"> というのは見当たりませんでしたが、script language="javascript" という記述はところどころにありました。 <form> ~~~ </form> らしきものは、最後のほうに、</form><form method="POST" name="req"></form> というのを見つけました。 お教えいただいた、objIE.document.forms(0)」を ウォッチ式 に追加の件ですが、やってみたところ<ウォッチ式が不正です>となってしまいました。 でも、詳しくほんとに有難うございました。