【Excel VBA×Selenium】チェックボックス・ラジオボタンを選択する方法|選択状態の確認も解説

みなさんこんにちは。

Excel VBAとSeleniumでWebフォームを自動操作する際、チェックボックスやラジオボタンをクリックしたことがある方も多いかと思います。

ただし、チェックボックスはクリックするたびに選択状態が切り替わるため、すでにチェックされている項目を再度クリックすると、逆にチェックが外れてしまいます。

今回は、IsSelectedで選択状態を確認してからClickする方法についてご紹介したいと思います。

この記事はこんな人におすすめ

  • SeleniumBasicでチェックボックスを操作したい人
  • ラジオボタンの選択状態を取得したい人
  • マクロの再実行によるチェック解除を防ぎたい人

今回使用するサンプルページ

今回はSelenium公式のWeb form(操作練習ページ)を使用します。「Default checkbox」と「Default radio」が未選択の状態で表示されていることを確認してください。

Selenium公式Webフォームでチェックボックスとラジオボタンの初期状態を確認した画面

IsSelectedで確認してからClickする

ExcelのVBEで「ツール」→「参照設定」からSelenium Type Libraryを有効にして、次のコードを実行します。

Sub SelectCheckboxAndRadio()

    Dim driver As New Selenium.ChromeDriver
    Dim chk As Selenium.WebElement
    Dim rad As Selenium.WebElement
    Dim i As Long

    'Chromeを起動して操作練習ページを開く
    driver.Start "chrome"
    driver.Get "https://www.selenium.dev/selenium/web/web-form.html"

    '最初は未選択のチェックボックスを取得する
    Set chk = driver.FindElementById("my-check-2")

    '最初は未選択のラジオボタンを取得する
    Set rad = driver.FindElementById("my-radio-2")

    '操作前の選択状態を表示する
    Debug.Print "操作前 checkbox=" & chk.IsSelected
    Debug.Print "操作前 radio=" & rad.IsSelected

    '同じ選択処理を2回実行して結果を比較する
    For i = 1 To 2

        'チェックされていない場合だけクリックする
        '2回目に実行してもチェックは外れない
        If chk.IsSelected = False Then chk.Click

        'ラジオボタンも未選択の場合だけクリックする
        If rad.IsSelected = False Then rad.Click

        '毎回、両方がTrueになっていることを確認する
        Debug.Print i & "回目 checkbox=" & chk.IsSelected
        Debug.Print i & "回目 radio=" & rad.IsSelected

    Next i

    '結果を画面で確認してからChromeを終了する
    MsgBox "両方の選択状態を確認してください。", vbInformation
    driver.Quit

End Sub

ポイントは、IsSelectedがFalseの場合だけClickを実行しているところです。これなら、同じ処理を繰り返してもチェック状態を維持できます。

チェックボックスとラジオボタンの違い

チェックボックスは複数項目を選択でき、クリックするたびにオン・オフが切り替わります。一方、ラジオボタンは同じグループ内で1つを選択する仕組みです。別の選択肢をクリックすると、元の選択は解除されます。

チェックを外したい場合は、チェックボックスに対してIf chk.IsSelected Then chk.Clickとすれば大丈夫です。ラジオボタンは、通常は同じグループ内の別の項目を選択します。

実行結果を確認する

VBEでCtrl + Gを押してイミディエイトウィンドウを開くと、操作前はFalse、1回目と2回目はいずれもTrueになっていることを確認できます。

SeleniumBasicのIsSelectedでチェックボックスとラジオボタンの選択状態を確認した実行結果

今回のコードは通常のHTMLフォームを対象にしています。独自デザインのフォームでは、実際に操作すべき要素を開発者ツールで確認してください。

最後に

いかがでしたでしょうか。今回は、SeleniumBasicでチェックボックスとラジオボタンを選択する方法についてご紹介しました。選択状態を確認してからクリックすることが、二重クリックによる意図しない変更を防ぐポイントとなります。少しでも参考になれば幸いです。

開発依頼について

ココナラでWebスクレイピング開発サービスを出品しております。

自分で開発をしようと思ったけど、VBAでのネット記事が少なく困っている方も多いかと思います。

そんな方はいつでもお気軽にご相談ください。

また、本ブログからご依頼いただいた方については割引特典がございますので、

ご不明点と合わせてメッセージをいただけると幸いです。

業務の流れをまるごと自動化します Excel・Web・Teams・SaaSで業務全体を自動化

Webスクレイピング以外にもWebアプリの開発サービスも出品しております。

こちらについても、本ブログからご依頼いただいた方については割引特典がございますので、

お気軽にご相談ください。

スモールスケールのWebアプリ開発します 先ずはスモールスケールのWebアプリから始めませんか?

ご興味がある方はこちら!!

コメントを残す

メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です

CAPTCHA