VBA デキる解る!IE操作編 【チェックボックスをチェック・判定する方法】

この記事は約6分で読めます。

VBA操作編6回目 サムネイル

どうも、マサヤです!

この記事は、VBAでのIE操作が初めて or 慣れていない方向けに『Webサイト・システムの情報を取得・設定する方法』をお伝えしていく連載記事となってます!

 

前回はWebサイトのラジオボタンへのチェックと判定方法を紹介しました!

 

今回は「チェックボックスへのチェック方法及び判定方法」をお伝えします!

本記事で習得できること

  • チェックボタン・チェックボックスへのチェック方法。
  • チェックボタン・チェックボックスのチェックしている項目の判定方法。
スポンサーリンク

【動画で確認】チェックボックスをチェック・判定する方法

 

チェックボックスのチェックと判別方法については、ラジオボタンとほぼ変わりません。

まずは動画で動きを確認しましょう。

※クリックすると大きくなります。

VBAIE操作 チェックボックスクリック

動画内で操作しているサンプルページはこちらです。

 

チェックボックスへのチェック・判定するコード

 

コードはこちらになります。

Sub ieSetCheckBox()

    'IEオブジェクトを作成
    Dim ie As InternetExplorer
    Set ie = CreateObject("InternetExplorer.Application")

    'HTMLコレクションを取得 独自関数化
    Call IeGetObj(ie, "https://mmm-program.com/vba-test-radioandcheckbox/")
    
    '興味の全てにチェックを入れる。
    For Each interest In ie.document.getElementsByName("interest")
        interest.Click
    Next
    
    i = 3
    'チェックした項目をB列に出力する。
    For Each interest In ie.document.getElementsByName("interest")
        If interest.Checked = True Then
            Cells(i, 2) = interest.Value
            i = i + 1
        End If
    Next
    
    'オブジェクトを閉じる
    ie.Quit
    
    'メモリからオブジェクトを破棄
    Set ie = Nothing
 
End Sub

'指定URLのオブジェクトを取得する独自関数
Sub IeGetObj(obj, url, Optional vFlg As Boolean = True)
    
    'IEを表示(見えるようにする)
    obj.Visible = vFlg
    
    '指定したURLをIEで開く
    obj.Navigate url
    
    'サイトの読み込みが完了するまで待つ
    Do While obj.Busy = True Or obj.readyState < READYSTATE_COMPLETE
        DoEvents
    Loop
    
End Sub

 

チェックボックス要素の取得後、Clickメソッドでチェックする

 

チェックボックス要素の取得方法に関しては前回と同様にName属性から取得しています。

もし、Name属性が付与されていない場合は、id・Class属性など他に付与されいる属性で取得します。

そして、取得したオブジェクトに対してClickメソッドを使うことでチェックが可能となります。

今回はName属性とId属性の2つの取得方法をお伝えします。

 

Name属性で取得

複数まとめてチェックしたい場合などは、下記のように書けるName属性が便利です。

※コード:10~13行目
'興味の全てにチェックを入れる。
For Each interest In ie.document.getElementsByName("interest")
    interest.Click
Next

Name属性を取得し、ForEachの繰り返しで全てのチェックボックスにチェックしてます。

 

Id属性で取得

チェックする項目が一つだけで固定されている場合、Id属性を使うほうがシンプルに書けます。

ie.document.getElementById("id名").Click

 

スポンサーリンク

Checkedメソッドでチェック状況を判別

 

チェックされているかどうかを判別する方法はラジオボタンと同様にCheckedメソッドで確認ができます。

i = 3
'チェックした項目をB列に出力する。
For Each interest In ie.document.getElementsByName("interest")
    If interest.Checked = True Then
        Cells(i, 2) = interest.Value
        i = i + 1
    End If
Next

CheckedがTrueならチェック済み、Falseなら未チェックとなります。

このコードで、興味のチェックボックスを一つずつ確認して、チェックが入って入ればExcelのB列に出力するといった処理を行っています。

 

注意点:Checkedメソッドでチェックする際は要注意

 

前回でもお伝えしたとおり、Checkedメソッドでもチェックが出来ますが、JavaScriptが反映(動作)しない可能性が高いことを注意しましょう。

動作させたい場合はClickメソッドを使うことでほぼ解決できますので、チェックする際はClickメソッドを使いましょう。

 

まとめ

 

チェックボタンのチェックと判別方法の流れは簡単にまとめると、

Name属性(付与されていない場合はidやClass)で要素を取得した上で、

  • チェック:取得した要素をClickメソッドでチェックする。
  • 判別  :Checkedメソッドで判別。Trueならチェック有、Falseならチェック無と判別。

※同じNameがチェックボタン以外に使われている場合は、if文を使いType=”checkbox”で絞り込む。

 

さて、次回はリストボックス(プルダウン)のチェックと判別方法をお伝えしていきますね!

 

コメント