LoginSignup
3
2

More than 1 year has passed since last update.

ExcelVBAとSeleniumでWebのプルダウンメニューの選択肢をExcelシートに一括で書き出す。ループ処理無し。

Last updated at Posted at 2023-02-18

やりたいこと

Webサイト上のプルダウンメニュー(HTMLのSelectタグ)の選択肢(Option)を
一括でExcelのシート上に書き出したい。
[イメージ]
image.png

image.png

ただしループ処理を使うと選択肢が多い時に遅くなるので、
配列処理で一括で書き出したい。

コード

コードです。前提として、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で選択状態にできます。

おわり

以上です。お疲れ様でした。

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2