InternetExplorerのセレクトボックスを選択するVBA(マクロ)コード

スポンサーリンク

セレクトボックスもVBAで選択できる

前回、InternetExplorerで表示されたページのテキストボックスに文字を入力するでVBAを使用したテキストボックスへの入力方法を記載しました。

同様にしてセレクトボックスも操作できるので、その方法を記載します。

セレクトボックスのタグ

セレクトボックスのVBAでの操作についてはマツキヨオンラインストアを元に考えてみます。

マツキヨオンラインストアにおいては商品検索の左側に商品カテゴリを指定するセレクトボックスがあります。
このセレクトボックスのタグは以下のように表示されています。

<select id=”categorySearchSelect” name=”categorySearchSelect” class=”main__itemSearch__select”>
<option value=””>商品カテゴリ</option>
<option value=”001″>医薬品・医薬部外品</option>
<option value=”003″>化粧品</option>
<option value=”004″>日用品</option>
<option value=”005″>食品</option>
</select>

セレクトボックスについてはoptionとして表示される文字列と対応する値(Value値)が決まっています。VBAで操作するにはこのValue値を指定することで目的の選択肢を選ぶことができます。

スポンサーリンク

セレクトボックスを取得し、値を入力するVBAコード

テキストボックスに文字を入力する場合と同じでid属性かname属性を用いることが多いです。
セレクトボックスで値を選択できるようにするためにまず、開いているウインドウをobjIEに格納します。

Dim colSh As Object
Dim win As Object
Dim objIE As InternetExplorer
Set colSh = CreateObject(“Shell.Application”)
For Each win In colSh.Windows
If TypeName(win.document) = “HTMLDocument” Then
If InStr(win.document.URL, “http://www.matsukiyo.co.jp/store/online”) > 0 Then
Set objIE = win
Exit For
End If
End If
Next

このコードを実行し、引き続いて以下の①か②のVBAコードを実行します。

②id属性で選択する場合

Dim txtSelect As HTMLSelectElement
’txtSelectという変数をHTMLのselectタグを入れるものとして定義する
Set txtSelect = objIE.document.getElementById(“categorySearchSelect”)
’idの値が” categorySearchSelect”のSelectタグをtxtSelectに格納する
txtSelect.Value = “001”
’txtInputの値を「001」とする(表示を「医薬品・医薬部外品」とする)

③name属性で選択する場合

Dim txtSelect As HTMLSelectElement
’txtSelectという変数をHTMLのselectタグを入れるものとして定義する
Set txtSelect = objIE.document.getElementsByName(“categorySearchSelect”)(0)
’nameの値が”categorySearchSelect”のselectタグのうち、一つ目をtxtSelectに格納する
txtSelect.Value = “001”
’txtSelectの値を「001」とする(表示を「医薬品・医薬部外品」とする)

VBAコードがうまく動かない場合

Amazonなどのサイトでは今回の記したVBAコードだけでは表示が切り替わりません。VBAで操作してセレクトボックスを操作すると、選択肢を選んだあとに自動で実行されるはずの画面表示を切り替えるプログラムが動かないためだと思われます。

解決するには手で操作したときに動くプログラムを実行する方法が考えられます。それに関してはまた別の機会にお伝えします。

おすすめ書籍 (広告)

コメント