VBA開発

VBAでIE操作「セレクトボックスの選択/解除」【エクセルマクロ】

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操作を覚えて効率化しませんか?
作成が大変であれば弊社で代行開発も可能です。お気軽にお問い合わせください。

 

コメント

タイトルとURLをコピーしました