7.9 フォームの操作2
 入力フォームを送信(SUBMIT)する場合の方法です。IEオブジェクトのDocumentオブジェクトを使って行います。

 これも、基本的にはHTML内に書くスクリプト(JavaScriptやVBScript)でやるときの方法と一緒です。
Documentオブジェクト(送信関連)
 フォームの送信をする場合の、Documentオブジェクトの使い方です。

 ◆ターゲットの指定/Target
 フレーム分割やインラインフレームを使っているときに送信結果を表示する部分を指定したい場合や、送信結果を別ウィンドウに表示したい場合などに指定します。フレーム分割やインラインフレームを使っているときに省略すると、フォームを表示している部分に送信結果が表示されます。必要が無ければ特に指定する必要はありません。
IEオブジェクト.Document.フォーム名.Target = フレーム名
 ※送信結果を別ウィンドウに表示したい場合は_blankなどを指定します

 ◆送信形式の指定/Method
 GETまたはPOSTを指定します。GET形式はhttp://…/xxx.cgi?p1=abc&p2=defなどのようにURLに情報を乗せるときの指定、POST形式は独立したデータとして送る場合の指定です。
IEオブジェクト.Document.フォーム名.Method = "POST"または"GET"

 ◆送信先の指定/Action
 送信先のcgiaspなどのアプリケーションやURLを指定します。
IEオブジェクト.Document.フォーム名.Action = 送信先のアプリケーション名やURL

 ◆送信/Submit
 フォームの情報を送信します。
IEオブジェクト.Document.フォーム名.Submit
使用例
 送信の例です。内容的には7.8 フォームの操作1と同じですが、最後にボタンを押す代わりにフォームを送信(@)しています。

 ちなみに、送信する先のURLは架空のものです。試してみたい場合は、cgiaspなどで試験用のアプリケーションや環境を用意し、そこへ向けて発射送信の実験をしてください。くれぐれも、他人の掲示板などで発射送信実験をしないように!

Option Explicit

Dim objIE

'objIEオブジェクトを作成します
Set objIE = CreateObject("InternetExplorer.Application")

'ウィンドウの大きさを変更します
objIE.Width = 800
objIE.Height = 600

'表示位置を変更します
objIE.Left = 0
objIE.Top = 0

'インターネットエクスプローラ画面を表示します
objIE.Visible = True

'カラのページを表示します
'(これを行わないと以降のdocument.writeなどがエラーになるため)
objIE.Navigate "about:blank"

'HTMLを出力します
objIE.Document.Write "<html>" & vbcrlf
objIE.Document.Write "<head>" & vbcrlf
objIE.Document.Write "<title>7.8 フォームの操作</title>" & vbcrlf
objIE.Document.Write "</head>" & vbcrlf
objIE.Document.Write "<script language=""javascript"">" & vbcrlf
objIE.Document.Write "function msg1() {" & vbcrlf
objIE.Document.Write "    alert(""わっ!"");" & vbcrlf
objIE.Document.Write "}" & vbcrlf
objIE.Document.Write "</script>" & vbcrlf
objIE.Document.Write "<body>" & vbcrlf
objIE.Document.Write "<form name=""fm1"">" & vbcrlf
objIE.Document.Write "<table border=1 cellpadding=2 cellspacing=0>" & vbcrlf
objIE.Document.Write "<tr>" & vbcrlf
objIE.Document.Write "<td>名前<br></td>" & vbcrlf
objIE.Document.Write "<td><input type=text name=txtName size=10><br></td>" & vbcrlf
objIE.Document.Write "</tr>" & vbcrlf
objIE.Document.Write "<tr>" & vbcrlf
objIE.Document.Write "<td>性別<br></td>" & vbcrlf
objIE.Document.Write "<td>" & vbcrlf
objIE.Document.Write "<select name=txtSex>" & vbcrlf
objIE.Document.Write "<option value=""0""></option>" & vbcrlf
objIE.Document.Write "<option value=""1"">男</option>" & vbcrlf
objIE.Document.Write "<option value=""2"">女</option>" & vbcrlf
objIE.Document.Write "</select>" & vbcrlf
objIE.Document.Write "</td>" & vbcrlf
objIE.Document.Write "</tr>" & vbcrlf
objIE.Document.Write "<tr>" & vbcrlf
objIE.Document.Write "<td>E-Mail<br></td>" & vbcrlf
objIE.Document.Write "<td><input type=text name=txtMail size=30><br></td>" & vbcrlf
objIE.Document.Write "</tr>" & vbcrlf
objIE.Document.Write "<tr>" & vbcrlf
objIE.Document.Write "<td>URL<br></td>" & vbcrlf
objIE.Document.Write "<td><input type=text name=txtUrl size=50><br></td>" & vbcrlf
objIE.Document.Write "</tr>" & vbcrlf
objIE.Document.Write "<tr>" & vbcrlf
objIE.Document.Write "<td>チェックボックス<br></td>" & vbcrlf
objIE.Document.Write "<td><input type=checkbox name=chkCheck size=50><br></td>" & vbcrlf
objIE.Document.Write "</tr>" & vbcrlf
objIE.Document.Write "<tr>" & vbcrlf
objIE.Document.Write "<td>ラジオボタン<br></td>" & vbcrlf
objIE.Document.Write "<td>" & vbcrlf
objIE.Document.Write "<input type=radio name=radSelect value=1>A<br>" & vbcrlf
objIE.Document.Write "<input type=radio name=radSelect value=2>B<br>" & vbcrlf
objIE.Document.Write "<input type=radio name=radSelect value=3>C<br>" & vbcrlf
objIE.Document.Write "</td>" & vbcrlf
objIE.Document.Write "</tr>" & vbcrlf
objIE.Document.Write "<tr>" & vbcrlf
objIE.Document.Write "<td>押してみて<br></td>" & vbcrlf
objIE.Document.Write "<td>" & vbcrlf
objIE.Document.Write "<input type=button name=btnMsg value=Click onClick=""msg1()"">" & vbcrlf
objIE.Document.Write "</td>" & vbcrlf
objIE.Document.Write "</tr>" & vbcrlf
objIE.Document.Write "</table>" & vbcrlf
objIE.Document.Write "</form>" & vbcrlf
objIE.Document.Write "</body>" & vbcrlf
objIE.Document.Write "</html>" & vbcrlf

'フォームを設定します
objIE.Document.fm1.txtName.value ="結城圭介"
objIE.Document.fm1.txtSex.selectedIndex = 1
objIE.Document.fm1.txtMail.value ="webmaster@happy2-island.com"
objIE.Document.fm1.txtUrl.value ="http://www.happy2-island.com/"
objIE.Document.fm1.chkCheck.checked = True
objIE.Document.fm1.radSelect(1).checked = True

'@送信に必要な情報を設定しフォームを送信します
'(URLは架空のもので存在しません)
objIE.Document.fm1.Action="http://abc.xyxyxy-xyxyxy.zzz/"
objIE.Document.fm1.Method="POST"
objIE.Document.fm1.Submit

'送信後のページ切り替えが終わるまでココでグルグル回る
Do Until objIE.Busy = False
   '空ループだと無駄にCPUを使うので250ミリ秒のインターバルを置く
   WScript.sleep(250)
Loop

'送信が完了したらコンソールにメッセージを表示
WScript.echo "送信しました"

'オブジェクトの破棄
Set objIE = Nothing
Copyright(C) 1999-2006 結城圭介。 All rights reserved