GoogleChromeを操作したい。SeleniumBasicが必要とのこと。
事前準備は割愛。
マクロ側からページ内にアクセスする時はロード待ち処理を必ず入れる。
IEで出来てた全選択コピー貼り付けがうまくいかず、、、諦めてデータは直接取得。
Dim driver As Selenium.WebDriver Sub 一連の流れ() Set driver = New Selenium.ChromeDriver driver.Start "chrome" '"edge" Dim sURL As String sURL = "URLを入力" driver.Get sURL 'ページ遷移テスト Call ConfirmationByName("名前属性") 'ロード待ち driver.FindElementByName("名前属性").Click '文字の入力 Call ConfirmationByName("テキストボックス") 'ロード待ち driver.FindElementByName("テキストボックス").SendKeys "入力する文字" 'ページ遷移テスト driver.Wait 1000 '待機 driver.FindElementByName("名前属性").Click 'ロード待ち Call ConfirmationByName("名前属性") 'ロード待ち '---------- データ取得 ---------- Dim wEmt As Selenium.WebElement Set wEmt = driver.FindElementByClass("クラス属性") Debug.Print wEmt.Text For Each wEmt In driver.FindElementsByClass("複数クラス属性") Debug.Print wEmt.Text Next '7番目と8番目のテーブルをエクセルシートに張り付け driver.FindElementsByTag("table")(7).AsTable.ToExcel [Sheet1!A1] driver.FindElementsByTag("table")(8).AsTable.ToExcel ThisWorkbook.Worksheets("Sheet1").Range("A4") ' Dim arr As Variant ' arr = driver.FindElementsByTag("table")(8).AsTable.Data 'driver.Close 'Set driver = Nothing End Sub '待機処理。指定したName属性のタグが出現するまで待機。 Sub ConfirmationByName(attName As String) Dim myBy As New By Dim cnt As Long: cnt = 0 Do While cnt < 10 If driver.IsElementPresent(myBy.Name(attName)) Then Exit Do driver.Wait 1000 cnt = cnt + 1 Loop If cnt >= 10 Then Debug.Print "タイムアウト( " & attName & " )" End Sub
以上。