ExcelVBAでWebスクレイピングをしようと思っておりまして、ブラウザはIEではなくMicrosoft Edgeを想定しています。
すでにSeleniumBasicをインストールしておりまして、あるサイトにおいてプルダウンメニューやテキストボックスにデータを入力し、ボタンを押すというところをプログラムの中で行おうとしています。
ExcelVBA
1Option Explicit 2 3Public Sub WebScraping() 4 'Webドライバ関連 5 Dim pid As Long 6 Dim pno As Long: pno = 17556 7 8 'JavaScript関連 9 Dim js As Object 10 Set js = CreateObject("ScriptControl") 11 js.Language = "JScript" 12 13 'Webドライバ起動 14 pid = StartEdgeDriver(PortNo:=pno) 15 If pid = 0 Then Exit Sub 16 17 ' ブラウザ(MicrosoftEdgeにて処理) 18 With CreateObject("Selenium.WebDriver") 19 20 'MicrosoftEdge呼出し 21 .StartRemotely "http://localhost:" & pno & "/", "MicrosoftEdge" 22 23 'URLを指定 24 .Get "目的のサイトURL" 25 26 Dim func As Object 27 Set func = js.Eval("(function () { document.getElementByClass('mat-select-value').selectedIndex = 13; });") 28 29 Debug.Print func 30 End With 31 32 TerminateEdgeDriver pid 33 34
まずは、プルダウンメニューのクラス名を指定し、その値を取得してDebug.Printで表示しようとしているのですが、以下のエラーが起こります。
実行時エラー'424':
オブジェクトが必要です。
ブラウザ(Microsoft Edge)は起動され、目的のサイト表示まではされるのですが、以降の処理でエラーが起きてしまいます。
デバッグをしたところ、上記プログラムの「Set func~」の行でエラーが起きていることがわかります。オブジェクトはその上の「Dim func As Object」と宣言しているのですが、これだけでは無効となるようです。
どのようにすれば、オブジェクトが有効となるのでしょうか。
また、JavaScriptもあまり詳しくはないので、Set func の右についても誤りがあるかもしれませんので、そのあたりも詳しく教えていただけないでしょうか。
JavaScriptを使わずに、VBAからプルダウンメニューやテキストボックス、ボタンなどを操作できる方法がありましたら、そちらも教えていただけるとありがたいです。
よろしくお願い致します。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/06/18 15:26