WebBrowserの接続待機を強引に待機させる【WebBrowser × ExcelVBA】
WebBrowserで接続待機をする際に安定しない為、強引に要素のテキストが出るまで待機させる方法をとった例
エラーが出る→Resumeステートメントで元に戻すで要素を操作できるまでエラーと行き来させる
またインナーテキストでテキストが一致するまで待機させる方法
後はquerySelectorで要素をSelectorで指定して取得し操作する方法を実践
実際に使用したサンプルコード
---------------------------------
Option Explicit
Private Sub CommandButton1_Click()
With WebBrowser1
'スクリプトエラーの抑止
.Silent = True
'指定したURLへ接続
.Navigate "https://vba.company/samplepage/"
On Error GoTo myerror
'セレクターで要素を指定してクリック
.Document.querySelector("#post-494 > div > div.wp-container-1.wp-block-buttons > div > a").Click
.Document.querySelector("#post-494 > div > div.wp-container-4.wp-block-buttons > div:nth-child(2) > a").Click
'指定した要素のテキストが2021年度実績じゃない間ループ
Do While .Document.querySelector("#post-494 > div > div.wp-container-3.wp-block-group > div > h2").innerText <> "2021年度実績"
DoEvents
Loop
.Document.querySelector("#post-494 > div > div.wp-container-4.wp-block-buttons > div:nth-child(2) > a").Click
Do While .Document.querySelector("#post-494 > div > h2").innerText <> "大量のテーブルデータページ"
DoEvents
Loop
On Error GoTo 0
End With
Exit Sub
myerror:
'OSに制御を渡し
DoEvents
'エラーが出たところに戻り処理を実行
Resume
End Sub