タグクリック「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
テスト用フォームページのソース
<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つが設定されています。
引数名 | データ型 | 内容 | 値の事例 | 初期値 | 省略 |
---|---|---|---|---|---|
objIE | InternetExplorer | IEオブジェクト | objIE,objIE2 | × | |
tagName | String | タグ要素の文字列 | "input","a","p" | × | |
tagStr | String | クリックする一意のキーワード文字列 | "送信","取り消し" | × |
「objIE」はオブジェクトを入力します。
「tagName」はタグ要素(input,a,tableなど)を入力します。
「tagStr」には、クリックする一意のキーワード文字列を入力します。
ここで1つ気づいた方もいると思いますが、「Call tagClick(objIE, "input", "buttonのボタンが押されました")」部分で、前回の内容と違って「buttonの」というキーワードが付加されています。
こちらは実際に私も後で気づいたのですが、なぜか前回の処理では送信ボタンがクリックされていました。
確認してすぐに分かったのですが、送信ボタンは
となっており、「ボタンが押されました」で処理すると送信ボタンが該当するため、こちらが処理されていたということです。
こういうことはよくあることですが、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のサブルーチンを利用したフォーム処理 >>
近田 伸矢, 植木 悠二, 上田 寛
IEのデータ収集&自動操作のプログラミング本はこの1冊だけ!IEの起動やポップアップウィンドウ、表示を制御する基本的なコードはもちろん、テキストボックスやラジオボタン、表、ハイパーリンクなどのHTML部品を制御する方法など、自動操作に欠かせないノウハウを丁寧に解説。