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でのネット記事は少なく困っている方も多いと思います。
弊社で代行開発も可能ですので、お気軽にご用命ください。
コメント