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

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です