フレーム内フォームクリック「frameTagClick」の解説
今回は、フレーム内のフォームクリックについて解説していきます。
クリックはinputタグのクリック方法とあらゆるタグをクリックできる方法がありますが、後者の方が利便性が高いのでそちらを紹介します。
フレーム内フォームクリックのサブルーチン
Sub frameTagClick(objIE As InternetExplorer, _
tagName As String, _
tagStr 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(tagName)
If InStr(objTag.outerHTML, tagStr) > 0 Then
objTag.Click
Call ieCheck(objIE)
GoTo label01
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 frameTagClick(objIE, "sex", "女")
'好きな色をクリック
Call frameTagClick(objIE, "lcolor", "赤")
Call frameTagClick(objIE, "lcolor", "黄")
'送信ボタンをクリック
Call frameTagClick(objIE, "input", "送信")
'取り消しボタンをクリック
Call frameTagClick(objIE, "input", "取り消し")
'ボタンをクリック
Call frameTagClick(objIE, "input", "buttonのボタンが押されました")
'ボタン2をクリック
Call frameTagClick(objIE, "input", "ボタン2が押されました")
'画像ボタンをクリック
Call frameTagClick(objIE, "input", "画像ボタンが押されました")
End Sub
実行結果
おなじみの引数ですが、こちらも以下の3つを設定しています。
引数名 | データ型 | 内容 | 値の事例 | 初期値 | 省略 |
---|---|---|---|---|---|
objIE | InternetExplorer | IEオブジェクト | objIE,objIE2 | × | |
tagName | String | タグ要素の文字列 | "input","a","p" | × | |
tagStr | String | クリックする一意のキーワード文字列 | "送信","取り消し" | × |
「objIE」はオブジェクトを入力します。
「tagName」はタグ要素(input,a,tableなど)を入力します。
「tagStr」には、クリックする一意のキーワード文字列を入力します。
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(tag)
If InStr(objTag.outerHTML, tagStr) > 0 Then
objTag.Click
Call ieCheck(objIE)
GoTo label01
End If
Next
こちらの処理は「formClickサブルーチン」と同じ処理になります。
フレームドキュメント内でまず指定したタグを取得して、指定したタグのエレメントから一意の文言がある場合にクリック処理を行うというものです。最後に完了したら、Gotoステートメントを利用してループ脱出という流れになります。
次回は「フレーム内値取得」では、フォームのサブルーチンを利用した処理についておさらいします。
次の記事: VBAでIEのフレーム内値取得のサブルーチン化 >>
近田 伸矢, 植木 悠二, 上田 寛
IEのデータ収集&自動操作のプログラミング本はこの1冊だけ!IEの起動やポップアップウィンドウ、表示を制御する基本的なコードはもちろん、テキストボックスやラジオボタン、表、ハイパーリンクなどのHTML部品を制御する方法など、自動操作に欠かせないノウハウを丁寧に解説。