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