- ベストアンサー
IE操作で次ページを別タブに表示する方法
- VB.NET(VB 2010 Express)を使用してIE(Ver.9)をWebBrowserコントロールではなく直接操作しています。
- 特定のサイトのトップページを表示し、ユーザIDとパスワードを入力してログオンボタンをクリックすると次のページが表示されます。
- しかし、次のページを別のタブに表示するためにはどうすればよいでしょうか?
- みんなの回答 (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を追加してみるとどうなりますでしょうか。
その他の回答 (3)
- luka3
- ベストアンサー率72% (424/583)
すみません。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() 'ログインボタンをクリック
補足
度々ありがとうございます。 何故か objIE.Document.FORM_301_01.target = "_blank" が効かないようですね。 問題の本アプリからではなく手動で操作する場合は、別タブで表示されるのですが。 また、妙案、代替案がありましたらよろしくお願いします。
- luka3
- ベストアンサー率72% (424/583)
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()で何をしてるかが気になります。
補足
またまた、ありがとうございます。 No.1で教えて頂きましたように、クリックの前に次の行を挿入しましたが、挿入前と同様に次ページは前ページと同じタブに表示されます。 objIE.Document.FORM_301_01.target = "_blank" また、No.2のobjIE.Document.form.FORM_301_01.ACCOUNT.Value = "yyyyyy"では、下記のエラーになります。 MissingMemberExceptionはハンドルされませんでした。 公開メンバー'form'型はHTMLDocumentClaa'に見つかりませんでした。 引き続きよろしくお願い致します。
- luka3
- ベストアンサー率72% (424/583)
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 とした方がよいと思います。
補足
回答ありがとうございます。 最初から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> : : よろしくお願い致します。
お礼
いつもサポートありがとうございます。 今回の回答にありましたように、ポップアップを許可するサイトに登録したところ、無事別タブで表示されるようになりました。 熱心にご支援頂き見事解決することができました。大変助かりました。ありがとうございまいました。