• ベストアンサー

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

  • VBAでサイトのsubmitボタンをクリックしたい

    とあるサイトに自動ログインするvbaを作っています。 (三流君を参考にしています) Sub ログイン() Set ObjIE = CreateObject("InternetExplorer.application") ObjIE.Visible = True '************************************************** ObjIE.navigate "https://www" Do While ObjIE.Busy = True '表示させるまで待つ DoEvents Loop Application.Wait (Now + TimeValue("00:00:03")) ObjIE.Document.all.UserId.Value = "ID" ObjIE.Document.all.submit_l貸出照会.Click ’ここでエラーになる End Sub 上記のようなコードを書いているのですが 該当サイトのソースを読み取り、 「INPUT TYPE="text" NAME="userid" VALUE=""」 の部分は ObjIE.Document.all.UserId.Value = "ID" で出来たのですが 「<INPUT TYPE="submit" VALUE="貸出照会">」 の部分をクリックしてログインしたいのですが ObjIE.Document.all.貸出照会.Click だとエラーになってしまいます。 ObjIE.Document.Forms(0).item("貸出照会").Click もダメでした。 ご教授よろしくお願い致します。 (エクセル2003)

  • VBAでブラウザ上のボタンがクリックできないので困っています。

    VBAでブラウザ上のボタンがクリックできないので困っています。 ソースは、 『 <input type="submit" value="全員に公開" onClick="sendClickLog(this,'[main]全員に公開ボタン');changeSave('saveentry','/ucs/entry/srventryinsertend1.do', '0');return false;" /> 』 この部分をクリックしたいです。 NameやIdがないのでobjIE.documentなどで設定できるのでしょうか? 教えてください。おねがいいたします。

  • VBAからIE操作 .document.forms(0).Submit でフォーム送信処理

    VBAからIE操作 .document.forms(0).Submit でフォーム送信処理 フォーム内にある登録ボタンを「objIE.Document.forms(0).Submit」で動作してみると、 ボタンは押されているみたいなのですが、同じページが開かれるだけで、登録されません。 なぜでしょうか?宜しくお願い致します。 以下はボタンのソースです。(他に必要なソースがあったら言ってください) <div><button class="button" onclick="var f=this.form;f.action='/business/entry_menu/entrance/create';;f.submit();this.disabled=true;">登録</button>

  • 【VBAでキーボード操作する方法について】

    【VBAでキーボード操作する方法について】 ボタンをクリックしたら、とあるサイトが自動的に検索できるツールを作成しておりますが、私が対象としているとあるサイトのsubmitボタンにname属性が指定されておりません。どうにかしてEnterキーを押したときと同じ動作になるようにしたいのですが、VBAでキーボードを操作することは可能なのでしょうか。 以下のソースはコマンドボタン2をクリックするとGoogleが立ち上がり、自動的に検索条件に"教えてGoo"と入力し、検索ボタンを押下してくれます。 ですが、これは、検索ボタンに"btnG"というname属性が指定されていたから可能であり、私が対象としているサイトではGoogleのようにsubmitボタンにはname属性は指定されておりません。 どうにかして自動的にEnterキーを押す(と同等な)ようなコードを記述することができないのでしょうか。 どなたか、お助けください。 Private Sub CommandButton2_Click() 'IEオブジェクト宣言 Dim objIE As Object 'IEオブジェクト作成 Set objIE = CreateObject("internetExplorer.application") '最前面に表示 objIE.Visible = True '対象URLへ移動 objIE.Navigate "http://www.google.co.jp/" '表示終了まで待つ Do While objIE.Busy = True DoEvents Loop '検索条件を指定 objIE.document.all.q.Value = "教えてGoo" 'ボタンを押してみる objIE.document.all.btnG.Click End Sub

  • エクセルVBAでWEBの送信ボタンクリック

    エクセル2000です。 VBAでNavigateを使いWeb画面(イントラネット)を開き、エクセルのデータを入力し、イントラの送信ボタンを押して画面を先に進めるコードがあります。 余計な部分を省略して簡略化してますがこのような感じです。 Sub TEST01()   Dim tmp As String   On Error Resume Next   tmp = objIE.Name   If Err.Number <> 0 Then 'エラーならIEが起動していないので、起動する     Set objIE = CreateObject("InternetExplorer.Application")   End If   On Error GoTo 0   myData = Sheet1.Range("A1").Text   With objIE     .navigate "http://abcd.co.jp/abc/****/***/*****************/***""     .Visible = True     Do While .busy       DoEvents     Loop     .document.all.Item("ClientNo").Value = myData 'テキストボックスへ入力:Name属性で指定     Do While .busy ' = True 'オートコンプリートなどの機能が働く場合があるので、念のため待機       DoEvents     Loop     .document.forms(0).submit '送信ボタンクリック   End With End Sub 先日までは、順調に動いていました。 ところがイントラネットの仕様が若干かわったようで、エクセルのデータを入力するところまでは動きますが、そこから先に進みません。 手作業でエンターキーを押すと進むので、 .document.forms(0).submit '送信ボタンクリック の部分を SendKeys "{ENTER}" とごまかして、何とか進むことはできましたが、Sendkeyではなく本来の修正方法をご教示いただきたいのです。 HTMLはほとんどわかりませんが、ソースを表示させてみると以下の部分がそれらしく思われます。(送信ボタンにマウスを持ってくるとボタンの色が変わります) </strong></td></tr><tr><td width="38%"><input type="hidden" name="enableXuras" value="1"></td><td onclick="xcs0010SearchClick();" onmouseout="BigOff(this);" onmouseover="BigOn(this);" class="Button Command" width="10%">送信</td><td width="4%"></td><td onclick="ClearForm(document.frm);" onmouseout="BigOff(this);" onmouseover="BigOn(this);" class="Button Command" width="10%">クリア</td><td width="38%"></td></tr></table><br><div> なにとぞ、よろしくお願いいたします。  (o。_。)oペコッ

  • vba ie操作 ボタンを押したい(2)

    https://ca.omc-card.co.jp/member/omcplus_login.html のサイトにログインしたいのですが、ログインボタンが押せません。 ソースは、 ********************************************************************************** <FORM action="../member/xt_mem_top_login.asp" method="post" name="form1"><input type="hidden" name="sid" value=""><input type="hidden" name="pw" value="">     ~~~省略~~~ <TABLE border="0" cellspacing="0" cellpadding="5" class="tab_button_bottom15"> <TR> <TD><A href="javascript:checkInput(document.form1);"><IMG src="../img/button/login.gif" alt="ログイン" width="160" height="35" border="0"></A></TD> </TR> </TABLE> </FORM> ********************************************************************************** です。 --------------------------------------------------------------------------------- Sub test() Dim objIE As InternetExplorer Set objIE = CreateObject("InternetExplorer.Application") objIE.Visible = True objIE.Navigate "https://ca.omc-card.co.jp/member/omcplus_login.html" Do While objIE.Busy = True Or objIE.ReadyState <> 4 DoEvents Loop objIE.Document.forms(0).Item("sid_input").Value = "×××" objIE.Document.forms(0).Item("pw_input").Value = "×××" Do While objIE.Busy = True Or objIE.ReadyState <> 4 DoEvents Loop 'objIE.Document.forms(1).submit 'エラーになる objIE.Document.all.Item("document.form1").Click 'エラーになる objIE.Document.forms(0).getElementsByTagName("input")(0).Click 'エラーにならないけどクリックもされない。 objIE.Document.forms(0).getElementsByTagName("input")(1).Click 'エラーにならないけどクリックもされない。 objIE.Document.forms(0).getElementsByTagName("document.form1")(1).Click 'エラーになる objIE.Document.forms(1).getElementsByTagName("input")(1).Click 'エラーになる Set objIE = Nothing End Sub --------------------------------------------------------------------------------- テキストにIDとPWを入れるところまでは出来たのですが、 ログインボタンを押すことができません。 すいませんがご教授ご回答よろしくお願いしますm( )m

  • 2つのボタンをクリックしていない、という条件判定

    1ページの中にフォームが幾つかあり、その内の2つのフォーム送信ボタンの何れもクリックされていなければ、という条件文を書きたいのですが、どう書くのでしょうか? ・対象フォーム name、 「a」「b」 ・submitボタンにも、nameを付けられるのでしょうか?

  • VBAでサイトにログインする際について

    とあるサイト(https://www.rakuten-sec.co.jp/ITS/V_ACT_Login.html)にログインしたく、VBAにてDocumentオブジェクトで、以下のように書きましたが、クリックのところでエラーになってしまいます。 ボタン名が submit%template なのでそのまま入力してもうまくいきませんでした。[]で閉じてもうまくいかず悩んでいます。 どなたか教えていただけませんか。 strURL = "https://www.rakuten-sec.co.jp/ITS/V_ACT_Login.html" strLogin = "loginid" strPassword = "password" objIE.Navigate strURL With objIE.Document .all.loginid.Value = strLogin .all.passwd.Value = strPassword .all.submit%template.Click

  • vb2005のWebbrowserコントロールで複数のSubmitボタンがある場合

    Webbrowserコントロールに読み込んだwebページ上に 複数のSUBMITボタンがある場合、name属性で押すボタンを選択し 実行する方法を教えてください。 -------------------------------------------------------------- 【htmlのソース】 <INPUT type=submit value=アップロード name=select> <INPUT type=submit value=次へ > -------------------------------------------------------------- 同一フォーム上に二つのボタンがある。 【vb2005のソース】 -------------------------------------------------------------- WebBrowser1.Document.Forms(0).InvokeMember("submit") -------------------------------------------------------------- を実行すると、 「<INPUT type=submit value=次へ >」のボタンの方は実行できるのですが、 「<INPUT type=submit value=画像のアップロード name=select>」の方は実行されません。 よく分からないなりに、 -------------------------------------------------------------- WebBrowser1.Document.All.GetElementsByName("select")(0).InvokeMember("submit") -------------------------------------------------------------- 等と書いてみましたが、反応ナシです。 ご教授、お願いいたします。

  • 送信ボタンがEnterキーでなく、マウスクリックのみに反応するようにする方法はないでしょうか?

    ページの一番上に、次の文による送信ボタンを設置しています。 <input name="submit" type="submit" value="送信"> 他に多くのテキスト入力フォームがあり、それを全て入力してからこの送信ボタンを押して、次の処理をしたいのに、例えば仮名漢字変換の際にEnterキーを誤って2回押しただけで表記ボタンに反応してしまい、次の処理に進んでしまいます。これを避けるため、ボタンがマウスクリックのみに反応するような方法、またはそれに準じた方法はないものでしょうか?宜しくお願いいたします。

    • ベストアンサー
    • HTML

専門家に質問してみよう