VBAでIEを操る(取得した要素を操作:☆ボタンをn回クリックする)
今回は、VBAから、テキストボックスに文字列を入力したり、セレクトボックスの項目を選択したり、チェックボックス・ラジオボタンをON・OFFしたり、リンクやボタンをクリックしたりしてみたいと思います。
前回、要素の取得方法について説明したので、今回は変数 myElem に操作対象の要素が取得されているものとして話を進めていきたいと思います。
目次
操作頻度が高い要素一覧
とりあえず、IE操作で使用頻度が高いと思われる要素、そのデータ型、プロパティ・メソッド(Value、checked、Click)をまとめてみました。
タグ名 | Type | Value | checked | Click | データ型 |
---|---|---|---|---|---|
INPUT | text | ○ | - | - | HTMLInputElement |
INPUT | radio | - | ○ | ○ | HTMLInputElement |
INPUT | checkbox | - | ○ | ○ | HTMLInputElement |
INPUT | button | - | - | ○ | HTMLInputElement |
INPUT | submit | - | - | ○ | HTMLInputElement |
INPUT | password | ○ | - | - | HTMLInputElement |
SELECT | ○ | - | - | HTMLSelectElement | |
TEXTAREA | ○ | - | - | HTMLTextAreaElement | |
a | - | - | ○ | HTMLAnchorElement |
※「-」は、その要素では何も起こらない・エラーになる・設定する必要がない という意味で「-」としました。
要素ごとのコード記述例
各要素ごとに、コード記述例を軽く紹介します。
テキストボックス
タグ名:INPUT
Type:text
テキストボックスに文字列を入力する場合
myElem.Value ="文字列"
テキストボックスに入力された文字列を取得する場合
myElem.Value
タグ名:INPUT
Type:radio
ラジオボタンをオン・オフする場合
myElem.Checked = True
myElem.Checked = False
ラジオボタンのオン・オフ状態を取得する場合
myElem.Checked
左クリックと同等の操作をする場合
myElem.Click
タグ名:INPUT
Type:checkbox
チェックボックスをオン・オフする場合
myElem.Checked = True
myElem.Checked = False
チェックボックスのオン・オフ状態を取得する場合
myElem.Checked
左クリックと同等の操作をする場合
myElem.Click
タグ名:INPUT
Type:button
左クリックと同等の操作をする場合
myElem.Click
タグ名:INPUT
Type:submit
左クリックと同等の操作をする場合
myElem.Click
パスワード入力欄
タグ名:INPUT
Type:password
パスワード入力欄に文字列を入力する場合
myElem.Value ="文字列"
パスワード入力欄に入力された文字列を取得する場合
myElem.Value
セレクトボックス
タグ名:SELECT
セレクトボックスのリストから項目を選択する場合
myElem.Value ="5"
※下記のような、<SELECT>タグの内側にある<option>タグでリスト化された値(value)以外は選択できないので注意
<SELECT>
<option value="0"></option>
<option value="1">てすと1</option>
<option value="2">てすと2</option>
<option value="3">てすと3</option>
<option value="4">てすと4</option>
<option value="5">てすと5</option>
</SELECT>
セレクトボックスで、現在選択されている値を取得する場合
myElem(myElem.selectedIndex).Value
テキストエリア
タグ名:TEXTAREA
テキストエリアに文字列を入力する場合
myElem.Value ="文字列"
テキストエリアに入力された文字列を取得する場合
myElem.Value
タグ名:a
ハイパーリンクをクリックする場合
myElem.Click
☆ボタンをクリックするコード
さて、ここまでを踏まえ、今回もブログ記事を表示したIEで少し遊んでみましょう。
VBAからClickメソッドを使って、ブログ記事の☆ボタン(いわゆるはてなスター)をクリックさせます。
ブラウザで記事を表示し、☆マークの上で右クリック → 要素の検証 などから、☆ボタンに Class属性"hatena-star-add-button" が付与されていることが確認できるので、これを使って要素を取得します。
タグ名は無視。
IEで、はてなブログ記事を表示した状態で下記コードを実行すると、☆(黄色)ボタンを1回クリックします。
Sub test()
Dim ie As Object
Dim sh As Object
Dim win As Object
Set sh = CreateObject("Shell.Application")
For Each win In sh.Windows
If win.Name = "Internet Explorer" Then
Set ie = win
Exit For
End If
Next
ie.document.getElementsByClassName("hatena-star-add-button")(0).Click
End Sub
1回じゃ足りん! 1万回押したる!!というなら、赤色の行を1万回ループすれば可能でございます。
☆ボタンクリック1万回は例え話ですが、そんな、気が遠くなるような繰り返し作業でも、マクロなら実行して後は寝て待つだけです。
補足:
実際は、☆ボタンをクリックした後、僅かに「読み込み」が発生します。
超高速でループしたところで、何回か空振りする運命なので、そうならないよう「読み込み」完了を待って次のクリックをさせる必要があります。
その辺については次回以降に。