IE操作で次ページを別タブに表示する方法

このQ&Aのポイント
  • VB.NET(VB 2010 Express)を使用してIE(Ver.9)をWebBrowserコントロールではなく直接操作しています。
  • 特定のサイトのトップページを表示し、ユーザIDとパスワードを入力してログオンボタンをクリックすると次のページが表示されます。
  • しかし、次のページを別のタブに表示するためにはどうすればよいでしょうか?
回答を見る
  • ベストアンサー

IE操作で次ページを別タブに表示するには?

VB.NET(VB 2010 Express)でIE(Ver.9)をWebBrowserコントロールではなく直接操作しています。 下記のコードのように、あるサイトのトップページを表示し、それにユーザID、パスワードを入力し、ログオンボタンをクリックして次のページを表示します。 次のページはトップページと同じタブに表示されますが、これを別タブに表示するにはどうすればよいのでしょうか?ご教示頂きたくよろしくお願い致します。 objIE = CreateObject("InternetExplorer.application") objIE.Visible = True objIE.Navigate("https://xxxxxxx.co.jp")    '表示ページのソース読込み完了を待つ(略) objIE.Document.all("ACCOUNT").Value = "yyyyyy" 'ユーザIDを入力 objIE.Document.all("PASSWD").Value = "zzzzz"   'パスワードを入力 objIE.Document.all("btn").Click()              'ログインボタンをクリック     '以下表示した次ページのソースを処理

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

  • ベストアンサー
  • luka3
  • ベストアンサー率74% (299/401)
回答No.4

以下を test.vbs といった名前で保存後ダブルクリックで実行してみてください。 -- ここから Set objIE = WScript.CreateObject("InternetExplorer.application") objIE.Visible = True objIE.Navigate("https://login.yahoo.co.jp/") Do While objIE.Busy WScript.Sleep 500 Loop objIE.Document.login_form.login.Value = "yyyyyy" 'ユーザIDを入力 objIE.Document.login_form.passwd.Value = "zzzzz" 'パスワードを入力 objIE.Document.login_form.target = "_blank" '別ページに表示 objIE.Document.login_form.submit() -- ここまで 私の環境(Win7+IE9)ではこれで別タブに「IDまたはパスワードが正しくありません」と表示されます。 ただセキュリティ設定により、ポップアップブロックが働く場合は「常に許可」を選ぶか、インターネットオプションのプライバシー→ポップアップブロック→設定に「login.yahoo.co.jp」を追加してください。 VBでもやっていることは変わらないはずですので、ポップアップブロックにご利用のURLを追加してみるとどうなりますでしょうか。

isunsun
質問者

お礼

いつもサポートありがとうございます。 今回の回答にありましたように、ポップアップを許可するサイトに登録したところ、無事別タブで表示されるようになりました。 熱心にご支援頂き見事解決することができました。大変助かりました。ありがとうございまいました。

その他の回答 (3)

  • luka3
  • ベストアンサー率74% (299/401)
回答No.3

すみません。formが余計でした。 objIE.Document.FORM_301_01.ACCOUNT.Value = "yyyyyy" 'ユーザIDを入力 objIE.Document.FORM_301_01.PASSWD.Value = "zzzzz"  'パスワードを入力 objIE.Document.FORM_301_01.target = "_blank"        '別ページに表示 objIE.Document.FORM_301_01.btn.Click()            'ログインボタンをクリック

isunsun
質問者

補足

度々ありがとうございます。 何故か objIE.Document.FORM_301_01.target = "_blank" が効かないようですね。 問題の本アプリからではなく手動で操作する場合は、別タブで表示されるのですが。 また、妙案、代替案がありましたらよろしくお願いします。

  • luka3
  • ベストアンサー率74% (299/401)
回答No.2

No.1のは試してみましたか? 一応書いてみますが objIE.Document.form.FORM_301_01.ACCOUNT.Value = "yyyyyy" 'ユーザIDを入力 objIE.Document.form.FORM_301_01.PASSWD.Value = "zzzzz"  'パスワードを入力 objIE.Document.form.FORM_301_01.target = "_blank"        '別ページに表示 objIE.Document.form.FORM_301_01.btn.Click()            'ログインボタンをクリック 次ページの取得は一部間違っていました Set Shell=CreateObject("Shell.Application") for each win in Shell.Windows if TypeName(win.document)="HTMLDocument" then if win.document.URL = "https://xxxxxxx.co.jp/…" then Set newObjIE = win (以下略) HTMLを見ますと ACCOUNT が2回出てくるのとouthtml()で何をしてるかが気になります。

isunsun
質問者

補足

またまた、ありがとうございます。 No.1で教えて頂きましたように、クリックの前に次の行を挿入しましたが、挿入前と同様に次ページは前ページと同じタブに表示されます。 objIE.Document.FORM_301_01.target = "_blank" また、No.2のobjIE.Document.form.FORM_301_01.ACCOUNT.Value = "yyyyyy"では、下記のエラーになります。 MissingMemberExceptionはハンドルされませんでした。 公開メンバー'form'型はHTMLDocumentClaa'に見つかりませんでした。 引き続きよろしくお願い致します。

  • luka3
  • ベストアンサー率74% (299/401)
回答No.1

VB.NETは使っていませんがWSHと同じ操作でいけると思いますので。 FORMに対してTAEGET属性を指定します。 例えば <FORM NAME=login ACTION=… となっていれば、 objIE.Document.login.target = "_blank" をClick()の前に入れます。 これで別のページで表示されます。(別タブになるか別ウインドウになるかはわかりません) 注意点として、このobjIEでは「次ページの処理」はできません。 次ページが表示されているobjIEを取得しなければなりません。 やり方はこんな感じです。 Set Shell=Wscript.CreateObject("Shell.Application") for each win in Shell.Windows if TypeName(win.document)="HTMLDocument" then if win.document.URL = "https://xxxxxxx.co.jp/…" then Set newObjIE = win あと気になるところとして、できればallではなく objIE.Document.login.ACCOUNT.Value とした方がよいと思います。

isunsun
質問者

補足

回答ありがとうございます。 最初からHTMLソースをお示しすればよかったのですが、先に挙げましたコードで実行しているHTMLソースは下記のようになっています。インデントが付けられなくてすみません。            :            : <FORM NAME="FORM_301_01" METHOD="POST" onSubmit="return outhtml(this)" TARGET="_top" ACTION="/cgi-bin/s/dcw11111.cgi" AUTOCOMPLETE="off"> <INPUT TYPE="hidden" NAME="EVENT" VALUE="DCWGA301-01"> <INPUT TYPE="hidden" NAME="MENUNO" VALUE="00"> <INPUT TYPE="hidden" NAME="ACCOUNT" VALUE=""> <INPUT TYPE="hidden" NAME="PASS" VALUE=""> <TR> <TD><b>口座番号</b></TD> <TD><INPUT TYPE="text" NAME="ACCOUNT" MAXLENGTH=10></TD> </TR> <TR> <TD><b>インターネットパスワード</b></TD> <TD><INPUT TYPE="password" NAME="PASSWD" SIZE=42></TD> </TR> <TR> <TD> </TD> <TD> <INPUT TYPE="submit" NAME="btn" VALUE="ログイン">  <INPUT TYPE="button" VALUE="クリア" onClick="sub_clear()"> </TD> </TR> </FORM>             :             : よろしくお願い致します。

関連するQ&A

  • IE操作で別タブ表示のHTMLソースの取得方法は?

    VB.NET(VB 2010 Express)でIE9をWebBrowserコントロールではなく直接操作しています。 先にここで、あるサイトのトップページを表示し、それにユーザID、パスワードを入力し、ログオンボタンをクリックして次のページを別タブで表示する方法を教えて頂きました。 そこで、別タブに表示した次ページのHTMLソースを取得する方法として、下記のコードを教えて頂きました。 Dim objIE As Object objIE = CreateObject("InternetExplorer.application") objIE.Visible = True objIE.Navigate("http://login.yahoo.co.jp/") Do While objIE.Busy System.Threading.Thread.Sleep(500) Loop objIE.Document.login_form.login.Value = "xxxxx" 'ユーザIDを入力 objIE.Document.login_form.passwd.Value = "yyyyy" 'パスワードを入力 objIE.Document.login_form.target = "_blank" '別ページに表示 objIE.Document.login_form.submit() Dim Shell As Object Dim win As Object Dim newObjIE As Object Shell = CreateObject("Shell.Application") For Each win In Shell.Windows If TypeName(win.document) = "HTMLDocument" Then 'このif文がTrueにならない If win.document.URL = "http://yahoo.co.jp" Then newObjIE = win Exit For End If End If Next しかし、コメントのあるif文がTrueにならないようです。修正方法を教えて頂きたくよろしくお願い致します。

  • 続:IEの操作で新ページのソース取得方法は?

    「VBによりIEでページを表示させ、そのページから新しいページに移動させたとき、その新ページのHTMLのDocument取得方法をご教示頂きたくお願いします。」と先に質問し下記の回答を頂きました。   HTMLタグ付きなら   WebBrowser1.Document.body.innerHTML   だったと思います。 最初に表示させたページの制御には、次のようにしました。   objIE.Document.All("ACCOUNT").Value = "xxxx"   objIE.Document.All("PASSwd").Value = "yyyy"   objIE.Document.All("btn").Click 新しいページに対しても最初のページと同じようにして制御出来るようにするにはどうすればよろしいのでしょうか? 初心者で、最初の質問は中途半端でした。よろしくお願いします。

  • VBAからIE操作でログインできない

    社内の業務管理システムにエクセルVBAでログインしようとしています、が、ログインはもとより、IDを入力する部分に私のID情報すら入力されません。 とりあえずID枠に入力する方法をアドバイスをお願いします。 ◆htmlソース <table> <tr> <td>ID</td> <td><input type="text" name="UserId" id="UserId" /></td> </tr> <tr> <td>PW</td> <td><input type="password" name="UserPass" id="UserPass" /></td> </tr> ◆VBAでは以下のいずれの文も失敗(ID入力枠に何も入らない。エラー発生。) ※右辺のD12セルには私のID情報を入力しています。 ObjIE.Document.all.UserId.Value = Worksheets("MyData").Range("D12").Value ObjIE.Document.all("UserId")(0).Value = Worksheets("MyData").Range("D12").Value ObjIE.Document.all("UserId").Value = Worksheets("MyData").Range("D12").Value ObjIE.document.forms(0).elements("UserId").Value = Worksheets("MyData").Range("D12").Value ObjIE.document.forms(0).elements("UserId")(0).Value = Worksheets("MyData").Range("D12").Value ObjIE.Document.getElementById("UserId").Value = Worksheets("MyData").Range("D12").Value ObjIE.document.all.Item("UserId").Value = Worksheets("MyData").Range("D12").Value 上記コードの何が間違っているのでしょうか? あるいは、上記の原因特定するために、何を試せばよいでしょうか? 宜しくお願いいたします。

  • ie操作 ログインボタンを押せないです

    こんばんは。いつもお世話になっております。 ie操作でうまく行かないので教えてください。 イトーヨーカドーのサイトにログインしたいのですがログインボタンが押下できません。 Sub test() Dim objIE As InternetExplorer Set objIE = CreateObject("InternetExplorer.Application") objIE.Visible = True objIE.Navigate "https://www.iy-net.jp/" Do While objIE.Busy = True DoEvents Loop objIE.Document.all("userId").Value = ID objIE.Document.all("password").Value = PW objIE.Document.forms(0).submit Set objIE = Nothing End Sub --------------------------------------------------------- だと、 「ハイフンを除く7ケタを半角数字でご入力ください」になってしまいます。 ログインボタンが押せてないのかもしれないけど、よくわかりません。 --------------------------------------------------------- Sub test() Dim objIE As InternetExplorer Set objIE = CreateObject("InternetExplorer.Application") objIE.Visible = True objIE.Navigate "https://www.iy-net.jp/" Do While objIE.Busy = True DoEvents Loop objIE.Document.all("userId").Value = ID objIE.Document.all("password").Value = PW For i = 0 To objIE.Document.Links.Length - 1 If objIE.Document.Links(i).innerText = "ログイン" Then objIE.Document.Links(i).Click Exit For End If Next i Set objIE = Nothing End Sub --------------------------------------------------------- にすると、 https://www.iy-net.jp/nspc/logininput.do のURLが表示されて会員認証の画面になってしまいます。 だからって objIE.Navigate "https://www.iy-net.jp/" を https://www.iy-net.jp/nspc/logininput.do にして objIE.Document.forms(0).submit すると https://www.iy-net.jp/nspc/searchresult.do のページが表示されて 「再度 TOPページよりログインいただけますようお願い申し上げます。」 になってしまいます。 ログインする方法を教えていただけますか? ご教授よろしくお願いします。

  • VBAでIE操作

    こんばんは。エクセル2003です。 証券会社にVBAでログインを試みてるのですができません。 ソースの一部を転記します。 <label for="account_id"><span>ユーザー名</span></label> <input type="text" tabindex="1" id="account_id" name="account_id" /> <label for="password"><span>パスワード</span></label> <input type="password" tabindex="2" id="password" name="password" /> <div id="rememberbox"> <label for="remember" id="rememberlabel">ユーザー名を記録する</label> <input type="checkbox" tabindex="3" name="remember" id="remember" /> </div> なので、下記VBAコードを作りました。 Sub IGマーケット証券() Set objIE = CreateObject("InternetExplorer.Application") objIE.Visible = True objIE.Navigate "http://www.igmarkets.co.jp/login/" Do While objIE.Busy = True DoEvents Loop Const READYSTATE_COMPLETE As Long = 4 Do Until objIE.ReadyState = READYSTATE_COMPLETE Loop objIE.Document.all("account_id").Value = "test" objIE.Document.all("password").Value = "test" objIE.Document.Forms(0).submit Set objIE = Nothing End Sub ですが、 objIE.Document.all("account_id").Value = "test" のところでエラーになってしまいます。 objIE.Document.all("login").Value = "test" に変えても同じです。 何がいけないのでしょうか? アドバイスよろしくお願いします。

  • 二つのタブを開き、二つ目のタブに対して、操作し

    vbaのie操作で 一つ目はタブはグーグルメール 二つ目のタブはドコモメールを開きたいのですが、 ドコモメールはPWをVBAで入れないと進めないので入れたいのですが Sub test() Dim myObj As Object Dim objIE As InternetExplorer Set objIE = CreateObject("InternetExplorer.Application") With objIE .Visible = True .Navigate "https://mail.google.com/mail/u/0/?pli=1#inbox" ’グーグル End With objIE.Navigate2 "https://mail.smt.docomo.ne.jp/mail/#fid=10000000&page=1", 2048 ’ドコモ For Each myObj In objIE.document.all.tags("input") If myObj.ID = "persistent" Then myObj.Value = "PW" Exit For End If Next Set objIE = Nothing End Sub だと、 For Each myObj In objIE.document.all.tags("input") は、グーグルメールを参照しています。 LocationURLを見てみたら、 "https://mail.google.com/mail/u/0/#inbox" になっていました。 このように、二つのタブを開き、二つ目のタブに対して、操作したい場合 どうすればいいでしょうか?

  • ログイン後他のページへ移動して表示保存

    Aというサイトに自動でログイン後に、他のページ(同サイト内)を表示してhtmlで保存する場合どのように変更すればいいのでしょうか?(今は自動ログイン後https://www.aaaaaaa.comのhtmlをexcel上に表示していますがこれをhttps://www.aaaaaaa.com/bbに移動させ表示してhtmlで保存したい) 教えて頂けませんでしょうか?よろしくお願いします。 XP/Excel2003 Sub test() Dim objIE As Object Dim URL01 As String Set objIE = CreateObject("InternetExplorer.application") objIE.Visible = True URL01 = "https://www.aaaaaaa.com" ID01 = "△△△△△△△" PASS = "○○○○○○○" objIE.Navigate URL01 Call wait_open(objIE) 'form.id部分はサイトのソースに合わせる objIE.document.all.ID.Value = ID01 'form.password部分はサイトのソースに合わせる objIE.document.all.PASS.Value = PASS Call wait_open(objIE) 'form部分はサイトのソースに合わせる objIE.document.LOGIN.submit Call wait_open(objIE) Sheets("Sheet1").Range("A1").Value = objIE.document.body.innerHTML End Sub Sub wait_open(objIE) Do While objIE.Busy Loop Do While objIE.document.ReadyState <> "complete" Loop End Sub

  • エクセルマクロでIE(java?のページ)を操作したい

    エクセルマクロでIEを操作させたいのですが、 javaで書かれていると思われるページの項目をクリックさせることが出来ません。 いろいろネットを調べたつもりなのですが出来ないため、アドバイスよろしくお願いします。 環境:WinXP,IE6,EXCEL2003 あるURL(公開されていません)を読み込むと出てくる最初のログイン画面では、 ソースを見て、下記エクセルマクロでログインまでは可能でした。 Sub ログイン() Dim objIE As Object Set objIE = CreateObject("InternetExplorer.application") objIE.Visible = True objIE.Navigate "http://○○○/Servlet" Do While objIE.Busy = True DoEvents Loop Do While objIE.ReadyState <> 4 DoEvents Loop objIE.document.forms(0).Item("id").Value = "xxxxxx" objIE.document.forms(0).Item("pass").Value = "yyyyyy" objIE.document.forms(0).submit '送信処理 Do While objIE.Busy = True DoEvents Loop Do While objIE.ReadyState <> 4 DoEvents Loop 'ここのクリックが出来ません objIE.document.forms(0).Item("NewData").Click End Sub ログイン後、左右分割フレームのページが表示されます。 左:メニュー、右:情報表示エリアです。 (ログイン後はjava?でフレームページを開いているようです。  ソースにフレームで開いているような記載が見当たりません) 左メニューのソース(加工してあり動作しません)は下記です。 <HTML> <HEAD> <TITLE>情報表示</TITLE> <LINK rel=stylesheet type=text/css href='http://○○○/txt.css'> <LINK rel='SHORTCUT ICON' href='http://○○○/txt.ico'> <SCRIPT language=JavaScript src='http://○○○/txt2.js'></SCRIPT> </HEAD> <BODY> <FORM action='' method=POST target='CONTENTS' name=servletAct> <INPUT type=hidden name=code value='12345'> </FORM> <SPAN ID=list2 onClick=showlist(this,'menu2')>+</SPAN><SPAN onClick=showlist(list2,'menu2') style='nowrap:true'>項目A(親)</SPAN> </FONT></B><BR> <DIV ID=menu2 STYLE='display:none;margin-top:0em;'> <TABLE style='font-size:3.0mm;'> <TR> <TD nowrap width=15 align=right><IMG src=http://○○○/bl.gif></TD> <TD nowrap><A href=javascript:document.NewData.submit()>項目A-1(子)</A></TD> </TR> <FORM action=http://△△△/CallServlet method=GET target=CONTENTS name=NewData> <INPUT type=hidden name=url value='http://△△△/PTServlet'> <INPUT type=hidden name=Para1 value='NEW'> <INPUT type=hidden name=Para2 value=''> </FORM> </TABLE> </DIV> </BODY> </HTML> 項目A(親)をクリックすると項目A-1(子)が表示されます。(折りたたみメニュー?) 項目A-1(子)をクリックするとフレームの右:情報表示エリアに情報が表示されます。 エクセルマクロで、項目A(親)をクリック、項目A-1(子)をクリックをやりたいです。 (ダイレクトに項目A-1(子)でもいい) objIE.document.forms(0).Item("NewData").Clickでは出来ませんでした。 (オブジェクト変数またはWithブロック変数が設定されていませんのエラー) アドバイスよろしくお願いします。

  • 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

  • VBでのIE操作

    VBでのIE操作をしようとして色々調べています。 色んなサイトを見ながら途中までは何とかできましたが、どうしてもリンク先を表示できません。 お分かりになる方いましたら、お力添えいただければ幸いです。 状況: Excel2007使用  IE7  VB初心者です。 やりたい内容: VBでIEを立ち上げる ↓ ページからリンクをクリックする (ページ上に画像が貼り付けてあって、そこにURLくっついててハイパーリンクになっている。) (セキュリティの関係でハイパーリンク先を初期で表示することはできない。) ↓ 表示されたページに検索したい項目を入力 ↓ 結果をエクセルに反映する。 以上の作業をVBで組もうと思ってます。 よろしくお願いします。 Option Explicit Sub ie_test() 'IEの起動 Dim objIE As Object Set objIE = CreateObject("InternetExplorer.Application") objIE.Visible = True '処理したいページを表示します。 objIE.navigate "処理したいページ" 'ページの表示待ち While objIE.readyState <> READYSTATE_COMPLETE Or objIE.Busy = True DoEvents Wend '開かれたIEを探す。 Dim objSHELL As Object Dim objWINDOW As Object Dim newIE As InternetExplorer Dim wait_time As Date Dim yCNT As Long Dim i As Integer '表示待ち wait_time = DateAdd("s", 2, Now()) Do While Now() < wait_time DoEvents Loop 'リンクの貼ってある画像をクリック For i = 0 To objIE.document.images.Length - 1 If InStr(objIE.document.images.Item(i).outerHTML, "image/btn131b1.gif") > 0 Then objIE.document.images.Item(i).Click End If Next '表示待ち wait_time = DateAdd("s", 2, Now()) Do While Now() < wait_time DoEvents Loop 'シェルのオブジェクトを作成する Set objSHELL = CreateObject("Shell.Application") Set newIE = objSHELL.Windows(objSHELL.Windows.Count - 1) Set objSHELL = Nothing '新しいウィンドウのログインボタンを押す Dim objINPUT As Object 'Inputタグ格納用 For Each objINPUT In newIE.document.all.tags("INPUT") If objINPUT.Value = "ログイン" Then objINPUT.Click Exit For End If Next '調べる項目 For yCNT = 3 To 1002 ' If Trim(Cells(yCNT, 1)) = "" Then Exit For 'A列が空白になったらループを抜ける 'ページが表示されたので処理を行います。 newIE.document.all("phone_no").Value = Cells(yCNT, 1) 'A列の文字を参照する newIE.document.all("exec").Click ※ここでオブジェクト変数。。。のエラーが発生する※ '表示待ち wait_time = DateAdd("s", 2, Now()) Do While Now() < wait_time DoEvents Loop '表示されたウインドウからデータをセットする Cells(yCNT, 2) = newIE.document.body.innerText '検索の結果をエクセルに反映 '新しいIEを閉じる newIE.Quit Set newIE = Nothing '前のIEを閉じる objIE.Quit Set objIE = Nothing Next yCNT End Sub 初心者なので色々調べたのですがわかりませんでした。。。

専門家に質問してみよう