タグクリック「tagClick」の解説

ここまで、formの「入力」「選択」「クリック」について、サブルーチン化させてきました。
今回はformのinputに対するクリックだけでなく、全てのタグに対してクリックできるサブルーチンを解説していきます。
こちらはformのsubmit・reset・button・imageをクリック処理にも使えますし、aタグなどにも利用できます。
ほとんどのクリック処理はこちらで対応できますので、前回のクリックより汎用性の高いサブルーチンとなります。

スポンサー リンク

タグクリックのサブルーチン


Sub tagClick(objIE As InternetExplorer, _
             tagName As String, _
             tagStr As String)

 'タグをクリック
 For Each objTag In objIE.document.getElementsByTagName(tagName)

  If InStr(objTag.outerHTML, tagStr) > 0 Then

   objTag.Click

   Call ieCheck(objIE)

   Exit For

  End If

 Next

End Sub

タグクリックマクロ

Sub sample()

  Dim objIE  As InternetExplorer

  'テスト用フォームページを表示
  Call ieView(objIE, "http://www.vba-ie.net/code/test.html")



 '送信ボタンをクリック
 call tagClick(objIE, "input", "送信")

 '取り消しボタンをクリック
 call tagClick(objIE, "input", "取り消し")

 'ボタンをクリック
 Call tagClick(objIE, "input", "buttonのボタンが押されました")

 'ボタン2をクリック
 call tagClick(objIE, "input", "ボタン2が押されました")

 '画像ボタンをクリック
 call tagClick(objIE, "input", "画像ボタンが押されました")

End Sub

テスト用フォームページのソース

<form method="post" name ="form1" action="?">
<input type="submit" value="送信" onclick="alert('送信ボタンが押されました')" />
<input type="reset" value="取り消し" />
<input type="button" value="ボタン" onclick="alert('type=buttonのボタンが押されました')" />
<input type="button" value="ボタン2" onclick="alert('type=buttonのボタン2が押されました')" />
<input type="image" src="http://www.vba-ie.net/img/button.png" alt="画像" onclick="alert('画像ボタンが押されました')" />(省略)
</form>

実行結果

ボタンがクリックされていく。

こちらの処理でそれぞれのボタンが次々にクリックされていきます。
引数は以下の3つが設定されています。

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

「objIE」はオブジェクトを入力します。
「tagName」はタグ要素(input,a,tableなど)を入力します。
「tagStr」には、クリックする一意のキーワード文字列を入力します。


ここで1つ気づいた方もいると思いますが、「Call tagClick(objIE, "input", "buttonのボタンが押されました")」部分で、前回の内容と違って「buttonの」というキーワードが付加されています。
こちらは実際に私も後で気づいたのですが、なぜか前回の処理では送信ボタンがクリックされていました。
確認してすぐに分かったのですが、送信ボタンは

<input type="submit" value="送信" onclick="alert('送信ボタンが押されました')" />

となっており、「ボタンが押されました」で処理すると送信ボタンが該当するため、こちらが処理されていたということです。
こういうことはよくあることですが、1つ1つ紐解いていくと簡単に原因が分かるので、焦らずに対応しましょう。
それでは、1つずつ解説していきます。


For Each objTag In objIE.document.getElementsByTagName(tagName)
(省略)
Next

まずは、タグ要素を取得します。ここから1つずつループでデータをチェックしていく処理です。


If InStr(objTag.outerHTML, tagStr) > 0 Then
(省略)
End If

こちらはお馴染みの一意のキーワードが含まれているエレメントをチェックします。


objTag.Click

Clickメソッド」で該当するエレメントをクリックします。


Exit For

最後に処理が完了したので、ループから脱出します。
中身は「formClickサブルーチン」と変わらない仕様となっておりますが、どんなタグにも対応しているので、非常に便利なサブルーチンです。

次回は「【まとめ】サブルーチンを利用したフォームの操作」では、フォームのサブルーチンを利用した処理についておさらいします。

次の記事: 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)操作で役立つサブルーチンをまとめています。
全てをコピーする必要はありませんが、目的に合わせたサブルーチンをご利用ください。