フレーム内フォーム選択「frameFormSelect」の解説
前回は、フレーム内のフォーム入力について解説しましたが、フレームを取得してからのフォーム処理もまったく同じです。
用は、該当するドキュメントを指定することができれば処理の方法は変わらないということです。
VBAでIE操作をする場合の基本は、「入力」「選択」「クリック」「値取得」ですので、あとは応用でこなしていきましょう。
それでは「選択」の解説をしていきます。
フレーム内フォーム選択のサブルーチン
Sub frameFormSelect(objIE As InternetExplorer, _
nameValue As String, _
tagValue As String)
'フレームのオブジェクトを取得する
Set objFrame = objIE.document.frames
For i = 0 To objFrame.Length - 1
'フレームドキュメントのオブジェクトを取得する
Set objFrameDoc = objFrame(i).document
'セレクトボックスの選択
For Each objTag In objFrameDoc.getElementsByTagName("select")
If objTag.name = nameValue Then
For Each objOption In objTag.getElementsByTagName("option")
If InStr(objOption.outerHTML, tagValue) > 0 Then
objOption.Selected = True
GoTo label01
End If
Next
End If
Next
Next
label01:
End Sub
フレーム内フォーム選択のマクロ
Sub sample()
Dim objIE As InternetExplorer
'本サイトを起動
Call ieView(objIE, "http://www.vba-ie.net/code/test2.html")
'出身地のセレクトボックスを選択
Call frameFormSelect(objIE, "pref", "福岡")
End Sub
実行結果
こちらの処理で「出身地」を自動選択します。
引数について以下の3つを設定しています。
引数名 | データ型 | 内容 | 値の事例 | 初期値 | 省略 |
---|---|---|---|---|---|
objIE | InternetExplorer | IEオブジェクト | objIE,objIE2 | × | |
nameValue | String | name属性の名前文字列 | "pref" | × | |
tagValue | String | 選択するoptionタグ内の一意のキーワード文字列 | "福岡" | × |
「objIE」はオブジェクトを入力します。
「nameValue」はname属性の値を入力します。
「tagValue」には、選択するoptionタグ内の一意のキーワード文字列を入力します。
Set objFrame = objIE.document.frames
こちらでフレーム情報を取得します。
For i = 0 To objFrame.Length - 1
(省略)
Next
Lengthプロパティはフレームの数を取得します。
今回のフレーム数は2ですが、フレームは0からスタートするので、-1で処理数を合わせています。
Set objFrameDoc = objFrame(i).document
こちらでループ毎にフレームのドキュメントを取得していきます。
For Each objTag In objFrameDoc.getElementsByTagName("select")
If objTag.name = name Then
For Each objOption In objTag.getElementsByTagName("option")
If InStr(objOption.outerHTML, tagValue) > 0 Then
objOption.Selected = True
GoTo label01
End If
Next
End If
Next
こちらの処理は「formSelectサブルーチン」と同じ処理になります。
フレームドキュメント内でまずselectタグを取得して、さらにoption要素内にキーワード文字列が含まれているかチェックして選択しています。最後に完了したら、Gotoステートメントを利用してループ脱出という流れです。
次回は「フレーム内フォームクリック」について解説していきます。
次の記事: VBAでIEのフレーム内フォームクリックのサブルーチン化 >>
近田 伸矢, 植木 悠二, 上田 寛
IEのデータ収集&自動操作のプログラミング本はこの1冊だけ!IEの起動やポップアップウィンドウ、表示を制御する基本的なコードはもちろん、テキストボックスやラジオボタン、表、ハイパーリンクなどのHTML部品を制御する方法など、自動操作に欠かせないノウハウを丁寧に解説。