質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
スクレイピング

スクレイピングとは、公開されているWebサイトからページ内の情報を抽出する技術です。

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

ドロップダウンメニュー

GUIを操作するユーザーインターフェイスで、リストボックスに似ており、ユーザーがリストから値を選べるようにするものです。ドロップダウンのリストが非アクティブの場合は、単体の値を表示します。アクティブ化されると、ユーザーが選択可能な値のリスト一覧を表示(ドロップダウン)します。

selenium

Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。

Q&A

解決済

2回答

9330閲覧

VBA selenium ドロップダウンリストの選択方法でのエラー解決方法を教えてください。

masa1975

総合スコア22

スクレイピング

スクレイピングとは、公開されているWebサイトからページ内の情報を抽出する技術です。

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

ドロップダウンメニュー

GUIを操作するユーザーインターフェイスで、リストボックスに似ており、ユーザーがリストから値を選べるようにするものです。ドロップダウンのリストが非アクティブの場合は、単体の値を表示します。アクティブ化されると、ユーザーが選択可能な値のリスト一覧を表示(ドロップダウン)します。

selenium

Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。

0グッド

0クリップ

投稿2020/10/16 21:59

編集2020/10/21 01:19

seleniumでスクレイピングの勉強をしているのですが、ドロップダウンメニューを選択する方法が
解らず困っております。

html

1<div class="style_select__3R6W_ common_fontFamily__3-3Si style_error__Ka39v style_fluid__31br4"> 2<div class="style_selectarea__3ZX8E"> 3<select name="categoryId"><option value="" label="選択してください" aria-selected="true">選択してください</option> 4<option label="レディース" value="1" aria-selected="false">レディース</option> 5<option label="メンズ" value="2" aria-selected="false">メンズ</option> 6<option label="ベビー・キッズ" value="3" aria-selected="false">ベビー・キッズ</option><option label="インテリア・住まい・小物" value="4" aria-selected="false">インテリア・住まい・小物</option> 7<option label="本・音楽・ゲーム" value="5" aria-selected="false">本・音楽・ゲーム</option><option label="おもちゃ・ホビー・グッズ" value="1328" aria-selected="false">おもちゃ・ホビー・グッズ</option> 8<option label="コスメ・香水・美容" value="6" aria-selected="false">コスメ・香水・美容</option> 9<option label="家電・スマホ・カメラ" value="7" aria-selected="false">家電・スマホ・カメラ</option> 10<option label="スポーツ・レジャー" value="8" aria-selected="false">スポーツ・レジャー</option> 11<option label="ハンドメイド" value="9" aria-selected="false">ハンドメイド</option> 12<option label="チケット" value="1027" aria-selected="false">チケット</option> 13<option label="自動車・オートバイ" value="1318" aria-selected="false">自動車・オートバイ</option> 14<option label="その他" value="10" aria-selected="false">その他</option> 15</select> 16<svg width="24" height="24" fill="#888888" fill-rule="evenodd" viewBox="0 0 24 24" aria-hidden="true"><path d="M12,15.66a1.73,1.73,0,0,1-1.2-.49L5.21,9.54a.7.7,0,0,1,1-1l5.62,5.62c.15.15.27.15.41,0L17.8,8.6a.71.71,0,0,1,1,0,.69.69,0,0,1,0,1l-5.57,5.58A1.71,1.71,0,0,1,12,15.66Z"> 17</path> 18</svg> 19</div> 20</div> 21

Excelの”A1"セルに選択したい内容を記入(例レディース)それを参照して
上のようなドロップダウンリストの中から同じ項目を選択したい場合
Excel、VBA、seleniumでどのようなコードを書けばよいのでしょうか?
ご教授いただけましたら幸いです。

vba

1 2Sub sukureip() 3Dim Driver As New Selenium.WebDriver 4 Driver.Start "chrome" 5 Driver.Get "hogefuga" 6 7 8Dim rc As Long 9Dim elm As Selenium.WebElement 10 11 rc = MsgBox("ログイン完了したらOKボタンを押してください", vbOKOnly) 12 13 If rc <> vbOKOnly Then 14 15 Set elm = Driver.FindElementByXPath("hoge") 16 17 elm.Clear 18 19 Driver.Wait 3000 20 21 Set elm = Driver.FindElementByXPath("hoge") 22 23 elm.Clear 24 25 'ここに選択するコードを書きたい 26 27'------追記----------------------------------------------------------------- 28 Dim optionText As String 29 30 31 32 optionText = Worksheets("Sheet1").Range("a1").Value '←ここでエラーになってしまいます 33 34 35 36 Driver.FindElementByName("categoryId").AsSelect.SelectByText (optionText) 37'----------------------------------------------------------------------------- 38 39 40 End If 41 Driver.Close 42 Set Driver = Nothing 43 44End Sub

解決策を教えて頂いたのですが追記矢印の場所で

実行時エラー59

レコード長が正しくありません

と出てしまいました。自分なりにググってみたのですがよくわからないので教えて頂けましたら
幸いです。よろしくお願いいたします。
環境
Windows10

Excel 2016

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

自己解決

自己解決することが出来ました。

色々コメント頂きありがとうございます。

投稿2020/10/25 23:11

masa1975

総合スコア22

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

VBA

1Sub sukureip() 2 Dim Driver As New Selenium.WebDriver 3 4 Driver.Start "chrome" 5 Driver.get "hogefuga" 6 7 8 9 Dim rc As Long 10 11 rc = MsgBox("ログイン完了したらOKボタンを押してください", vbOKOnly) 12 13 If rc <> vbOKOnly Then 14 15 Set elm = Driver.FindElementByXPath("hoge") 16 17 elm.Clear 18 19 Driver.Wait 3000 20 21 Set elm = Driver.FindElementByXPath("hoge") 22 23 24 elm.Clear 25 26 'ここに選択するコードを書きたい 27 optionText = Range("A1").Value 28 Driver.FindElementByName("categoryId").AsSelect.SelectByText (optionText) 29 30 31 End If 32 Driver.Close 33 Set Driver = Nothing 34 35End Sub

投稿2020/10/17 05:07

Reach

総合スコア735

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

masa1975

2020/10/21 01:23

回答ありがとうございます。 ですか、実行時エラー59と出てしまいました。何故でしょうか?
Reach

2020/10/22 22:46

① optionText = "レディース" で 正常動作しますでしょうか? ② 【Sheet1】の a1セルの内容を削除して、そこに 【レディース】を 入れて 正常動作しませんでしょうか?
masa1975

2020/10/25 23:13

xpathにすることで無事動かすことが出来ました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問