アプリ版:「スタンプのみでお礼する」機能のリリースについて

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()              'ログインボタンをクリック
    '以下表示した次ページのソースを処理

A 回答 (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を追加してみるとどうなりますでしょうか。
    • good
    • 0
この回答へのお礼

いつもサポートありがとうございます。

今回の回答にありましたように、ポップアップを許可するサイトに登録したところ、無事別タブで表示されるようになりました。

熱心にご支援頂き見事解決することができました。大変助かりました。ありがとうございまいました。

お礼日時:2012/08/20 21:54

すみません。

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" が効かないようですね。
問題の本アプリからではなく手動で操作する場合は、別タブで表示されるのですが。

また、妙案、代替案がありましたらよろしくお願いします。

補足日時:2012/08/17 17:19
    • good
    • 0

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'に見つかりませんでした。

引き続きよろしくお願い致します。

補足日時:2012/08/17 12:52
    • good
    • 0

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>
            :
            :
よろしくお願い致します。

補足日時:2012/08/17 02:04
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!