VBAの勉強を始めてみた

色々試しています。

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

 


テキストエリア

f:id:kouten0430:20180818141252j:plain

タグ名: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万回は例え話ですが、そんな、気が遠くなるような繰り返し作業でも、マクロなら実行して後は寝て待つだけです。

 

補足:

実際は、☆ボタンをクリックした後、僅かに「読み込み」が発生します。
超高速でループしたところで、何回か空振りする運命なので、そうならないよう「読み込み」完了を待って次のクリックをさせる必要があります。
その辺については次回以降に。