VBAのIE(InternetExplorer)制御のframe内form選択のサブルーチン化する方法について解説しています。
前回は、フレーム内のフォーム入力について解説しましたが、フレームを取得してからのフォーム処理もまったく同じです。
用は、該当するドキュメントを指定することができれば処理の方法は変わらないということです。
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部品を制御する方法など、自動操作に欠かせないノウハウを丁寧に解説。
↑VBAのIE操作で分からない事があればこちらの掲示板よりご質問ください。
ExcelのVBA初心者入門↑こちらはVBAをマスターできるよう初心者向けのエクセルVBA入門コンテンツになります。
こちらでは、これまでに紹介したIE(InternetExplorer)操作で便利な機能をツール化しています。無償でダウンロードできますので、目的に合わせたご利用ください。
こちらでは、IE(InternetExplorer)オブジェクトのメソッド・プロパティをまとめています。
こちらでは、エクセルVBAのIE(InternetExplorer)操作で利用されたVBA関数をまとめています。
こちらでは、エクセルVBAのIE(InternetExplorer)操作で利用されたステートメントをまとめています。ExcelのVBAで基本的な部分になりますので、しっかり理解しましょう。
こちらでは、これまでに作成したIE(InternetExplorer)操作で役立つサブルーチンをまとめています。
全てをコピーする必要はありませんが、目的に合わせたサブルーチンをご利用ください。