フレーム内フォームクリック「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(InternetExplorer)操作で分からない事があればこちらの掲示板よりご質問ください^^

ExcelのVBA初心者入門

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

VBAのIE制御入門RSS

RSSフィードを登録すると最新記事を受け取ることができます。

VBAIE操作のスカイプレッスン

VBAでIE(InternetExplorer)制御の準備

【ダウンロード】IE操作に便利なツール

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

IEオブジェクトのメソッド・プロパティ

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

IE操作に利用されているVBA関数

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

IE操作に利用されているステートメント

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

IE(InternetExplorer)制御のVBAコード

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