• 締切済み

VBAでIEの操作をするうえで

noname#233986の回答

noname#233986
noname#233986
回答No.1

sendkeysだったかな、でENTERを押せばいいです。 でもメッセージが表示されないと、ENTER押してもなんにもならんから 数秒待たないといけないかも。 http://officetanaka.net/excel/vba/statement/SendKeys.htm

関連するQ&A

  • VBAでIEで開いたダイアログのオブジェクトの操作

    VBAでIE(Edge)上のWebページのエディットボックスやボタンを操作するには、 ie(COMオブジェクト)を取得して、 For Each obj In ie.document.getElementsByTagName("input")  If obj.ID = "txtDenpyoNo" Then   obj.Value = d_no   Exit For  End If Next For Each obj In ie.document.getElementsByTagName("input")  If obj.ID = "btnSearch" Then   obj.Click   Exit For  End If Next というような感じで、 エディットボックスに値を入れたり取得したり ボタンをクリックしたりする仕方は分かりましたが、 サイト上のボタンをクリックすると、 別のウインドウやダイアログが表示されることがあります。 このような場合、HTMLコードがないため、 上記の方法では記述することができません。 新しいウインドウやダイアログのタイトルから、 IDは取得することはできましたが、この取得したIDで、 ウインドウやダイアログをアクティブにするには、 どのように記述すればよいのでしょうか。 また、ウインドウやダイアログ上のオブジェクトの 指定の仕方がよく分からないのですが、 ウインドウやダイアログ上のオブジェクトを操作するには、 どのように記述をすればよいのでしょうか。 よろしくお願いします。(Windows10,IE,Edge)

  • VBA、IE操作、初心者になります

    webページの操作についての質問になります。 VBAでやりたいことです。 (1)webページを開き、指定したソースが表示されるまで、画面を更新 (2)ソース表示がされたら、指定したボタンをクリック (3)画面が移行する (4)移行したページの指定したボタンをクリック 不具合 (2)ボタンクリック後、ページは移行するが(4)のボタンが押せません。 しかし(3)のページを直接指定して開いた後に(4)の動作を行うときちんとボタンクリックが出来ます。 順番に(1)→(2)→(3)→(4)と処理を行うと(4)のボタンが押せないという状況です。 こんな感じで作成しました。 Dim objIE As InternetExplorer ' Set objIE = CreateObject("Internetexplorer.Application") objIE.Visible = True Dim strUrl As String strUrl = "●●●●●●?sc_i=shp_pc_top_mdItemRanking_01" objIE.navigate strUrl Do While objIE.Busy = True Or objIE.readyState < READYSTATE_COMPLETE Loop (1)の処理 Do While (True) If (TypeName(objIE.document.getElementsByClassName("●●●●")(0)) <> "Empty") Then Set tmp = objIE.document.getElementsByClassName("●●●●") flag = False For Each t In tmp If (InStr(t.getAttribute("class"), "●●●●") > 0) Then t.Click flag = True Exit For End If Next End If If (flag = True) Then Exit Do Application.Wait [Now() + "0:00:00.5"] objIE.Refresh Do Loop Until (objIE.Busy = False) And (objIE.readyState = 4) Loop (3)の画面移行 (4)の処理 Set objINPUT = objIE.document.getElementsByTagName("INPUT")  For n = 0 To objINPUT.Length - 1 If InStr(objINPUT(n).Value, "●●●●") > 0 Then objINPUT(n).Click Exit For End If Next Do While objIE.Busy = True Or objIE.readyState < READYSTATE_COMPLETE Loop Set objINPUT = Nothing 以上になります。 お手数ですが、どなたかご教示をお願いいたします。

  • ラジオボタンが選択された項目のみ操作可能

    ラジオボタンが選択された項目のみ操作できるようにしたいです。 小学校が選択されたら 小学校のチェックボックスとボタンはenable 中学校のチェックボックスとボタンはdisabled?readonly? よろしくお願いします。 <html> <head> <title>ラジオボタンが選択されたらチェックボックス・ボタンを入力可能にする</title> <script Language="JavaScript"><!-- function setRTF() { fOBJ = document.myFORM; RadioNum = 2; // ラジオボタンの数 for (i=0; i<RadioNum; i++) { if (fOBJ["mm"][i].checked) fOBJ["aa"+i].disabled = false; else fOBJ["bb"+i].disabled = true; } } function allcheck(obj,flag){ var target=obj.parentNode.getElementsByTagName("input"); for(var i=0;i<target.length;i++){ if(target[i].type=="checkbox") target[i].checked=flag; } } // --></script> </head> <body> <form name="myFORM"> <table border="1"> <tr> <td><input type="radio" name="mm" onClick="setRTF()">小学校</td> <td><input type="radio" name="mm" onClick="setRTF()">中学校</td> </tr> <tr> <td> <input type="checkbox" name="aa[]" value="1" />A小学校<br/> <input type="checkbox" name="aa[]" value="2" />B小学校<br/> <input type="checkbox" name="aa[]" value="3" />C小学校<br/> <input type="button" value="全選択" onClick="allcheck(this,true)"/><br> <input type="button" value="全解除" onClick="allcheck(this,false)"/> </td> <td> <input type="checkbox" name="bb[]" value="1" />A中学校<br/> <input type="checkbox" name="bb[]" value="2" />B中学校<br/> <input type="checkbox" name="bb[]" value="3" />C中学校<br/> <input type="button" value="全選択" onClick="allcheck(this,true)"/><br> <input type="button" value="全解除" onClick="allcheck(this,false)"/> </td> </tr> </table> </form> </body> </html>

  • VBAからWEB操作

    わかりにくい質問でしたらすみません。 VBAからWEB操作ができることを最近知り、 VBAで操作できる範囲のことから JavaScriptの勉強を始めています。 JavaScriptを使って他社が作ったWEBページの テキストボックスに文字を入れたり オプションボタンをチェックしたり するように作っています。 VBAの記述では以下のように使っています。 For Each obj inobjie.document.getelementsbytagname("input") if obj.type="radio" and obj.value="2" then obj.checked=true endif next ホームページからもらった記述を自分の環境に合わせたものなのですが getelementsbytagnameに"input"を入れると typeが取れるという感覚がなくて Nameが取れたりもしますし、何をどこまで取れるのかわからないのです。 "option"を入れたら 何が取れているんだろう?など… "a"だと、<a></a>の中身が取れているんだな…くらいまではなんとなくわかりました。 WEBページのソースを確認して、 テキストボックスの名前を調べたりしていますが Nameが設定されていなかったりもしますし そのときは、デバックでobjをウォッチしてひとつひとつ見たりしてるんですが こんな方法しかないのかなぁ?と思っています。 VBAを独学していたときは、勉強できるホームページがたくさんあったりしましたが VBAからのWEB操作については 独学ではこんな感じで進めるしかないのでしょうか 幅広い回答いただけるとうれしいです。 ※JavaScriptのほうにも、同じ趣旨の質問を書かせていただきました

  • ラジオボタンのNullチェック

    ラジオボタンがひとつもチェックが入ってない時にエラーを出したいのですがうまくいきません。 <script language="JavaScript1.2"> function chk_Riyu(){ for(idRadio=0; idRadio<frmEntry.optRiyu.length; idRadio++){ if(frmEntry.optRiyu[idRadio].checked) { return true; break; } alert("チェックされてません"); return false; } } </script> <form name="frmEntry" action="aaa.htm" method="post"> <input type="submit" value="理由" onclick="return chk_Riyu()"> <input type="Radio" name="optRiyu" value="1">あああ</td> <input type="Radio" name="optRiyu" value="2">いいい</td> <input type="Radio" name="optRiyu" value="3">ううう</td> このソースだと、一度目はチェックにひっかかるのですが、再度ラジオボタンにチェックを入れて理由ボタンを押してもエラーになってしまいます。 どこかおかしいところがありましたら教えていただけないでしょうか。 すみませんが宜しくお願いいたします。

  • 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

  • 複数あるチェックボックスの入力チェックするには?

    チェックボックスの入力チェックスクリプトを探しており、下記のようなスクリプトをネット検索で見つけました。 <!-- <script type="text/javascript"> function chNull(msg,obj) { if(!obj) return true; if((obj.type || obj[0].type) == 'checkbox'){ var flag = 0; if(obj.length){ for(var i=0; i<obj.length; i++) { if(obj[i].checked) flag = 1; } } else { if(obj.checked) flag = 1; } if(flag == 0) { alert(msg + 'を選択してください。'); return false; } } return true; } --> </script> <form method="POST" action="■.cgi" onSubmit="return chNull('チェックボックス',a);"> <input type="checkbox" name="a" value="A1" />A1 <input type="checkbox" name="a" value="A2" />A2 </form> 同じnameのチェックボックス群がひとつしかないときはこれで問題ないのですが、 下記のようにnameが複数ある場合にはこのスクリプトのどの部分を変えればよいのでしょうか? <input type="checkbox" name="a" value="A1" />A1 <input type="checkbox" name="a" value="A2" />A2 <input type="checkbox" name="b" value="B1" />B1 <input type="checkbox" name="b" value="B2" />B2 <input type="checkbox" name="c" value="C1" />C1 <input type="checkbox" name="c" value="C2" />C2 できればこのスクリプトをベースとして使用したいと思っています。どなたかお分かりの方がいらっしゃいましたらお教え下さいませ。 よろしくお願い致します。

  • vbaでnanacoにログイン(ie操作)

    私は「緑のパスワードがなくnanacoをお持ちの方」です。 カード記載の番号にはvbaで値を入れることはできるのですが、 nanaco番号に値を入れることとログインボタンを押すことができません。 ********************************************** Sub nanaco() Dim objIE As InternetExplorer Dim myObj As Object Set objIE = CreateObject("InternetExplorer.Application") objIE.Visible = True objIE.navigate "https://www.nanaco-net.jp/pc/emServlet" Do While objIE.Busy = True DoEvents Loop Do While objIE.document.readyState <> "complete" DoEvents Loop objIE.document.all("XCID").Value = "12345" objIE.document.all("SECURITY_CD").Value = "Password" For Each myObj In objIE.document.forms(0).all If TypeName(myObj) = "HTMLInputElement" Then If myObj.alt = "ログイン" Then myObj.Click Exit For End If End If Next Set objIE = Nothing End Sub ********************************************** これだとまずall("XCID").Value でエラーになります。 ソースでは、 <input name="XCID" tabIndex="1" class="txtBoxLogin" accessKey="1" type="text" maxLength="16" value=""/> となっておりますが、同じコードが二つあるからエラーになるのでしょうか? all("SECURITY_CD").Value は問題なくできます。 ソースにも、SECURITY_CDは一つしかないです。 次にログインボタンも二つあるのですが、 For Each myObj In objIE.document.forms(0).all If TypeName(myObj) = "HTMLInputElement" Then If myObj.alt = "ログイン" Then myObj.Click Exit For End If End If Next このコードを実行すると、多分上の方のログインボタンが押されてるようです。 なので、 Dim 二つ目 As Boolean For Each myObj In objIE.document.forms(0).all If TypeName(myObj) = "HTMLInputElement" Then If myObj.alt = "ログイン" Then If 二つ目 = True Then myObj.Click Exit For End If 二つ目 = True End If End If Next に変更してみたのですが、 どうやら If myObj.alt = "ログイン" Then になるのは、1回しかないようです。 うーん、うまくできません。 ご教授よろしくお願いします。

  • 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

  • IEで動くのに、Firefoxで動かない場合

    すみません。似たような質問を確認しましたが、自分の例とどうリンクしていいか判断できず、大変申し訳ないのですがご教示ください。 下記のようにテキストボックスに入った数字を合計するJavascriptを書きました。IEでは動きますが、Firefoxではそもそもテキストボックスに数字を入力することもできません。お分かりになる方、改善方法をご教示願えませんでしょうか。 よろしくお願いいたします。 <HTML> <HEAD> <SCRIPT language=JavaScript type=text/javascript> <!-- function sum(){ var listpage = document.forms ['listPageForm'] ; var value1 = parseFloat (listpage.elements ['TX_1'].value) ; var value2 = parseFloat (listpage.elements ['TX_2'].value) ; var value3 = parseFloat (listpage.elements ['TX_3'].value) ; if(isNaN(value1) || value1=="") value1 = 0; if(isNaN(value2) || value2=="") value2 = 0; if(isNaN(value3) || value3=="") value3 = 0; var sample_sum = value1 + value2 + value3; listpage.elements ['TX_4'].value = sample_sum.toString (); if(listpage.elements ['TX_1'].value.substring(0,1)=='0') listpage.elements ['TX_1'].value = value1; if(listpage.elements ['TX_2'].value.substring(0,1)=='0') listpage.elements ['TX_2'].value = value2; if(listpage.elements ['TX_3'].value.substring(0,1)=='0') listpage.elements ['TX_3'].value = value3; if(listpage.elements ['TX_1'].value=='') listpage.elements ['TX_1'].value = 0; if(listpage.elements ['TX_2'].value=='') listpage.elements ['TX_2'].value = 0; if(listpage.elements ['TX_3'].value=='') listpage.elements ['TX_3'].value = 0; } function check(){ var flag = 0; if(document.listPageForm.TX_4.value == "100"){ flag = 1; } if(flag){ return true; } else{ window.alert('合計が100%になりません。'); return false; } } //--> </SCRIPT> <FORM name="listPageForm" onSubmit="return check()"> <TD><INPUT onkeypress='if(event.keyCode<"0".charCodeAt(0) || "9".charCodeAt(0)<event.keyCode) return false;' onkeyup=sum(); style="IME-MODE: disabled; TEXT-ALIGN: right" name="TX_1" value="_TX_1_">% </TD> <TD><INPUT onkeypress='if(event.keyCode<"0".charCodeAt(0) || "9".charCodeAt(0)<event.keyCode) return false;' onkeyup=sum(); style="IME-MODE: disabled; TEXT-ALIGN: right" name="TX_2" value="_TX_2_">% </TD> <TD><INPUT onkeypress='if(event.keyCode<"0".charCodeAt(0) || "9".charCodeAt(0)<event.keyCode) return false;' onkeyup=sum(); style="IME-MODE: disabled; TEXT-ALIGN: right" name="TX_3" value="_TX_3_">% </TD> <TD><INPUT onkeypress='if(event.keyCode<"0".charCodeAt(0) || "9".charCodeAt(0)<event.keyCode) return false;' onkeyup=sum(); style="IME-MODE: disabled; TEXT-ALIGN: right" name="TX_4" value="_TX_4_">% </TD>