• ベストアンサー

VBA 確認・送信ボタン

VBAでWEBページにあるフォームに文章を記載し、送信させるものを作っていますが、WEBページのフォームの下に確認ボタンがあり、 そのボタンをクリックするところまではできましたが、次に出てくる 画面の送信ボタンをクリックすることができません。 結果投稿できません。 どうすればいいのでしょうか? 確認ボタンは、 objIE.document.all.submit.Click でうまくいけました。 次に出てくる送信ボタンのnameもsubmitになっています。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.1

適当に実験してみました。 対象のページがどの様になっているのか不明なので、直接の解決は考えられませんが、ご参考にでもなれば… 1)Yhooで「クリック」の単語で検索 2)検索結果の画面で「条件を指定して検索」をクリック 3)再度、検索語を「ダブルクリック」にして検索 というのをやってみました。 かなり適当ですが、一応、なんとか動作するみたい。(Excel2003、IE6) そのまま、ベタで記述してますが、最後のformはsubmitボタンが2個あるので、ボタンの特定がしにくいため、form.Submitでいけるかと思いましたがどうも効かないみたい。面倒なので、番号で指定してClickにしてしまいました。 Sub test() Dim ie As Object  Set ie = CreateObject("InternetExplorer.Application")  ie.Visible = True  ie.Navigate "http://www.yahoo.co.jp/index.html"  Do While ie.Busy = True Or ie.readystate <> 4   DoEvents  Loop  ie.document.getElementById("srchtxt").Value = "クリック"  ie.document.getElementById("srchbtn").Click  Do While ie.Busy = True Or ie.readystate <> 4   DoEvents  Loop  ie.document.getElementById("sb").getElementsByTagName("A")(0).Click  Do While ie.Busy = True Or ie.readystate <> 4   DoEvents  Loop  Set ie = ie.document.getElementsByTagName("FORM")(0)  ie.Item("va").Value = "ダブルクリック"  ie.getElementsByTagName("INPUT")(7).Click    Set ie = Nothing End Sub

sumi3377
質問者

お礼

実験の内容がとても参考になりました。 有難うございました。

sumi3377
質問者

補足

確認ボタンをクリックした後の画面は、フォームに入力した文章を確認する画面になり、フォームのソースは下記の様になっています。 <!--FORM------------------------------------------------------> <form action="/setup/index.php" method="post" name="form" id="form"> <div> <input name="x2" type="hidden" value="1" /> <input name="x" type="hidden" value="15028" /> <input name="y" type="hidden" value="80" /> <input name="Action" type="hidden" value="update" /> <input name="temp_type" type="hidden" value="" /> <input name="type" type="hidden" value="1" /> <input name="shop_id" type="hidden" value="15028" /> <input name="comp" type="hidden" value="comp" /> <table border="0" cellspacing="2" cellpadding="2" width="95%"> <tr><TD></TD><TD valign="middle" align="right">update mode</TD></tr><tr> <td align="right" valign="middle" class="label_1" width="100"> 更新時間 </td> <td valign="middle" align="left" class="label_2"> 2009-10-07 07:54:47<input type="hidden" name="time" value="2009-10-07 07:54:47" /> </td> </tr><tr> <td align="right" valign="middle" class="label_1" width="100"> タイトル </td> <td valign="middle" align="left" class="label_2"> ☆☆☆<input type="hidden" name="title" value="☆☆☆" /> </td></tr><tr> <td align="right" valign="middle" class="label_1" width="100"> コメント</td> <td valign="middle" align="left" class="label_2"> ☆☆☆ <input type="hidden" name="comment" value="☆☆☆"/> </td></tr><tr><TD></TD><TD valign="middle" align="left"><INPUT type="image"name="submit"alt="送信" src="/image/menu/30.png"border="0" onMouseover="chgImg('/image/menu/30_n.png',this)" onMouseout="chgImg('/image/menu/30.png',this)"><img src="/image/menu/116.png"border="0"alt="戻る"onClick="history.back()" onMouseover="chgImg('/image/menu/116_n.png',this)" onMouseout="chgImg('/image/menu/116.png',this)" ><!--Confirmation--></TD></tr> </table> </div> </form> <!--FORM------------------------------------------------------> 確認画面から送信画面に移動した後に、表示されるページのsubmitボタンが押せずに送信されないです。 下記が書いたものですので、見てください。 Sub test1() Dim objIE As Object Dim strCOMMENT As String strtitle = Sheets("sheet1").Range("D7") strCOMMENT = Sheets("sheet1").Range("D9") Application.WindowState = xlMinimized Set objIE = CreateObject("InternetExplorer.application") objIE.Navigate "http://" While objIE.ReadyState <> 4 'READYSTATE_COMPLETE = 4 While objIE.Busy = True DoEvents Wend Wend objIE.document.Forms(0).Item("title").Value = strtitle objIE.document.Forms(0).Item("comment").Value = strCOMMENT objIE.document.all.submit.Click 'ここまで動作OKです。 While objIE.ReadyState <> 4 'READYSTATE_COMPLETE = 4 While objIE.Busy = True DoEvents Wend Wend objIE.document.all.submit.Click '送信処理 wait test2 End Sub

その他の回答 (1)

回答No.2

確認画面の送信ボタンは type="image" なので、Submitボタンではありません。 objIE.document.forms("form").submit このようにフォームに対してsubmitを実行してみてください。"form"のところは<FORM>のNAME属性またはID属性を指定します。ご提示されたHTMLが name="form" となっていたので実際と異なる場合は適宜修正してください。

sumi3377
質問者

お礼

自分なりに色々考えて行い、無事できました。 ありがとうございました。

関連するQ&A