ie-excel

エクセル・マクロでie操作

Excel VBAでIEを操作 プルダウンで選択されている文字列を取得する

2018/11/11

プルダウンメニューの時HTMLのタグは、「Select」タグで表現されます。
実際の選択肢は「Select」タグの子タグの「Option」タグで構成されルこととなります。
そして現在選択されている選択肢は、プロパティである「Selected」が「True」もしくは「selected」となってます。

と書いてもわかりにくいので、Amazonでカテゴリー選択するプルダウンのメニューの実際のソースです。

Amazonのソース
上記ソースを簡単に説明します。

プルダウンが「Select」タグで宣言されています。

選択肢は多数あったので、3つほどに限定したソースにしています。
「Option」タグで「すべてのカテゴリー」「Amazon フレッシュ」「Amazon デバイス」が選択可能となってます。

以下のタグに対し、SelectedのプロパティがSelectedとなっているため、「すべてのカテゴリー」が選択されていることとなります。

前準備

  • Visual Basic Editor の画面から「ツール」→「参照設定」を選択します。
  • 「Microsoft Internet Controls」と「Microsoft HTML Object Library」にチェックを入れて、OKを押す

IEのから対象ウィンドウを特定して、プルダウンで選択されている文字を取得する

IEを開いているとして、そこから対象ウィンドウを特定し、プルヅンで選択されている文字列を取得するためには以下が必要となります。

  1. 複数のウィンドウからIEを特定する
  2. 対象のサイトが開いているIEを特定する
  3. プルダウンメニューをすべて一つずつ以下の処理をする
  4. オプションタグを読み取り、選択されているタグの文字列を取得する

上記を実際のVBAで表現すると以下のようになります。

実際のコード
selectタグに限定して1件ずつ処理
変数「selDoc」にHTMLのSELECT要素をのオブジェクトであることを宣言しています。

読み込んだHTMLのドキュメントの中で「select」タグを限定。一件ずつ処理することとしています。

Selectタグの中のOptionタグを1件ずつ処理
上記で対象としたSelectタグに対して、その子タグのうち「Option」タグを検索しています。

今回の対象は選択されているデータのため、プロパティである「selected」が「True」のデータを取得します。
※Selectedのプロパティには「Ture」もしくは「False」が設定されます。

-ExcelでIE操作