フレーム内フォームクリック「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

※ドラッグ(スワイプ)すると全体を確認できます。

実行結果

formテキスト自動クリック
他ボタンをクリックする。

おなじみの引数ですが、こちらも以下の3つを設定しています。

引数名データ型内容値の事例初期値省略
objIEInternetExplorerIEオブジェクトobjIE,objIE2×
tagNameStringタグ要素の文字列"input","a","p"×
tagStrStringクリックする一意のキーワード文字列"送信","取り消し"×
frameTagClick("IEオブジェクト","タグ要素の文字列","クリックする一意のキーワード文字列")

「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のフレーム内値取得のサブルーチン化 >>

Excel VBAでIEを思いのままに操作できるプログラミング術 Excel 2013/2010/2007/2003対応

近田 伸矢, 植木 悠二, 上田 寛

IEのデータ収集&自動操作のプログラミング本はこの1冊だけ!IEの起動やポップアップウィンドウ、表示を制御する基本的なコードはもちろん、テキストボックスやラジオボタン、表、ハイパーリンクなどのHTML部品を制御する方法など、自動操作に欠かせないノウハウを丁寧に解説。

VBAのIE制御についてのQ&A掲示板

↑VBAのIE操作で分からない事があればこちらの掲示板よりご質問ください。

ExcelのVBA初心者入門

↑こちらはVBAをマスターできるよう初心者向けのエクセルVBA入門コンテンツになります。

目次

IE操作に便利なツール

こちらでは、これまでに紹介したIE(InternetExplorer)操作で便利な機能をツール化しています。無償でダウンロードできますので、目的に合わせたご利用ください。

IEのメソッド・プロパティ

こちらでは、IE(InternetExplorer)オブジェクトのメソッド・プロパティをまとめています。

IE操作のVBA関数

こちらでは、エクセルVBAのIE(InternetExplorer)操作で利用されたVBA関数をまとめています。

IE操作のステートメント

こちらでは、エクセルVBAのIE(InternetExplorer)操作で利用されたステートメントをまとめています。ExcelのVBAで基本的な部分になりますので、しっかり理解しましょう。

IE制御のVBAコード

こちらでは、これまでに作成したIE(InternetExplorer)操作で役立つサブルーチンをまとめています。
全てをコピーする必要はありませんが、目的に合わせたサブルーチンをご利用ください。