Selenium VBAを使ってChromeを操作していると、2025年3月現在で初期のタブがデフォルトでアクティブにならなくなっています💦。その結果、プラグインのページが最初に開かれてしまい、思った通りの動作にならないことが発生しました。
プラグインを使わなければ回避できますが、それだと面倒なので、タブのタイトルを指定して正しく切り替える方法を追加しました😊。
これまで driver.Start "chrome"
を使ってブラウザを開くと、以前はアクティブタブで処理が開始されていました。しかし、最近のSeleniumではデフォルトでプラグインのページが開かれるようになり、希望するタブが自動的に選ばれなくなりました。
Pythonでは簡単に解決できるコードが出てきますが、VBAで対応する方法を模索した結果、以下のコードに落ち着きました✨。
以下のコードを使えば、指定したタイトルを持つタブに自動で切り替わります🎉。
“`vba
Dim driver As New Selenium.ChromeDriver
Dim firstTitle As String
Dim currentTitle As String
Const TARGET_TITLE As String = “kiseki” ‘ 検索するタイトルの固定文字列
‘ すでに起動している場合、この行は不要
‘ driver.Start “chrome”
‘ 開始時のタブのタイトルを記録
firstTitle = driver.Title
Do
‘ 現在のタブのタイトルを取得
currentTitle = driver.Title
' タイトルに TARGET_TITLE を含むか確認
If InStr(1, currentTitle, TARGET_TITLE, vbTextCompare) > 0 Then
' 見つかったので終了(このタブに留まる)
Exit Do
End If
' 次のウィンドウ(タブ)へ
driver.SwitchToNextWindow
' 1周して元のタブに戻った場合、対象がないと判断
If driver.Title = firstTitle Then
MsgBox "対象のタブ(" & TARGET_TITLE & " を含むタイトル)が見つかりませんでした。"
Exit Do
End If
Loop
firstTitle = driver.Title
で、現在開いているタブのタイトルを記録します。driver.Title
で現在のタブのタイトルを取得し、TARGET_TITLE
を含んでいるか判定します。InStr(1, currentTitle, TARGET_TITLE, vbTextCompare) > 0
で、該当するタブならループを抜けます。driver.SwitchToNextWindow
で次のタブへ切り替え、最初のタブに戻ったら対象がないと判断して終了します🔄。この方法を使えば、VBAでも希望するタブを自動でアクティブにすることができます🎯。
Selenium VBAを使っている方は、ぜひ試してみてくださいね😊!