VBAでEdge/Chromeを起動し、Webページ内のセレクトボックスの選択・解除する方法です。
セレクトボックスの事を、プルダウンやドロップダウンメニューとも言います。
セレクトボックスの選択・解除するサンプルコード
当方の問い合わせページにセレクトボックスがある為、そちらをサンプルとして記載します。
'■Edge/Chromeでセレクトボックスを選択・解除する。
Public Sub sample()
'■ブラウザを起動
driver.Start "chrome" 'Edgeの場合はdriver.start "edge"
driver.Get "https://vba-create.jp/kyoteivba-contact/"
'■上から9番目の「その他投票」を選択する場合(どれでも一緒です)
driver.FindElementsByName("pref")(1).AsSelect.SelectByIndex (8) '上から9番目(0からスタートのため8)
driver.FindElementsByName("votemenu")(1).AsSelect.SelectByValue ("その他投票") 'option value="その他投票"
driver.FindElementsByName("votemenu")(1).AsSelect.SelectByText ("その他投票") 'Text(画面表示が)"その他投票"
'■その他投票 を選択解除する
driver.FindElementsByName("pref")(1).AsSelect.DeselectByIndex (0) '""を選択。
'下記はマルチ選択の場合にのみ使えるため、セレクトボックスの場合は動作しません。
driver.FindElementsByName("pref")(1).AsSelect.DeselectAll
driver.FindElementsByName("pref")(1).AsSelect.DeselectByIndex (2)
driver.FindElementsByName("pref")(1).AsSelect.DeselectByValue ("福岡")
driver.FindElementsByName("pref")(1).AsSelect.DeselectByText ("福岡")
End Sub
'■HTMLサンプル
<span class="wpcf7-form-control-wrap votemenu">
<select name="votemenu" class="wpcf7-form-control wpcf7-select wpcf7-validates-as-required" aria-required="true" aria-invalid="false">
<option value=""></option>
<option value="人気_追上(No別)">人気_追上(No別)</option>
<option value="人気_追上(Gr別)">人気_追上(Gr別)</option>
<option value="人気_追上(場別)">人気_追上(場別)</option>
<option value="買い目_追上(No別)">買い目_追上(No別)</option>
<option value="買い目_追上(Gr別)">買い目_追上(Gr別)</option>
<option value="買い目_追上(場別)">買い目_追上(場別)</option>
<option value="買い目_通常">買い目_通常</option>
<option value="その他投票">その他投票</option>
</select>
</span>
その他
- JavaScriptが関わる、FireEventがある場合は、上記では動作しません。
- サイトによってはJavaScriptで動いているにもかかわらず、
onClick要素やChange要素がないケースがあります。ご注意ください。
SeleniumBasicについて
Internet Explorer11 のサポート期限が2022年6月までと、スクレイピング自体入れ替えていく必要があります。
今一番スムーズなのはSeleniumBasicを使用したスクレイピングと考えます。
但し、VBAでのネット記事は少なく困っている方も多いと思います。
弊社で代行開発も可能ですので、お気軽にご用命ください。



コメント