VBAでIEを起動し、Webページ内のセレクトボックスの選択・解除する方法です。
セレクトボックスの事を、プルダウンやドロップダウンメニューとも言います。
Forで選択したい要素を特定しし、「Selected = True」処理を入れるだけです。
セレクトボックスの選択・解除するサンプルコード
当方の問い合わせページにセレクトボックスがある為、そちらをサンプルとして記載します。
'■InternetExplorerでセレクトボックスを選択・解除する。 Sub sample_IE_selextbox_select() Dim objIE As InternetExplorer Dim objDoc As Variant '■IEを起動 Set objIE = CreateObject("InternetExplorer.Application") objIE.Visible = True '■該当ページへ遷移 objIE.navigate "https://vba-create.jp/kyoteivba-contact/" Call Call_IE_WaitTime '■optionタグを全て検索し、"買い目_通常"を選択状態にする For Each objDoc In objIE.document.getElementsByTagName("option") If InStr(objDoc.Value, "買い目_通常") > 0 Then objDoc.Selected = True Exit For End If Next objDoc '■買い目_通常 を選択解除する objDoc.Selected = False 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>
その他
- 毎度おなじみですが、Call_IE_WaitTimeの処理はこちらを参照ください。
- JavaScriptが関わる、FireEventがある場合は、上記では動作しません。
- サイトによってはJavaScriptで動いているにもかかわらず、
onClick要素やChange要素がないケースがあります。ご注意ください。
その他
Internet Explorerを使用して、Webスクレイピングは敷居が高い風に捉えられますが、
上記のように、パーツ化して組み合わせ処理するだけです。
Web上のデータを触りたい要望は会社様でも個人様でも多いと思います。
VBA IE操作を覚えて効率化しませんか?
作成が大変であれば弊社で代行開発も可能です。お気軽にお問い合わせください。
コメント