やりたいこと
Webサイト上のプルダウンメニュー(HTMLのSelectタグ)の選択肢(Option)を
一括でExcelのシート上に書き出したい。
[イメージ]
↓
ただしループ処理を使うと選択肢が多い時に遅くなるので、
配列処理で一括で書き出したい。
コード
コードです。前提として、SeleniumBasicとChromeDriverのインストールが完了しているものとします。
Sub Get_selectoptions()
'Chrome起動
Set Driver = New selenium.ChromeDriver
'目的のサイトにアクセス
Driver.Get "https://***"
'目的のプルダウンメニューをオブジェクトとして取得
Set myselect = Driver.FindElementByXPath("****")
'プルダウンの選択肢をtextで一括取得し、改行(chr(10))で配列に分解する
option_array = Split(myselect.text, Chr(10))
'貼り付け先となるセル範囲を上記の配列でリサイズする。
'貼り付ける値はTransposeで行列を逆転させると、縦方向に貼り付けが可能
Selection.Resize(UBound(option_array)).Value = WorksheetFunction.Transpose(option_array)
End Sub
逆にExcelシートの内容をプルダウンに反映
上記と逆に、Excelシートの内容をプルダウンに反映したい場合
'プルダウンの選択肢を選択状態にする
Driver.FindElementsById("***").AsSelect.SelectByText hoge
のように、AsSelect.SelectByText
で選択状態にできます。
おわり
以上です。お疲れ様でした。