「KISEKI」は介護事業者のための採用支援サービスです。インターネット求人応募が主流となる中、人材獲得にはSEO対策やインスタグラムマーケティングの活用が重要です。テオ株式会社は、ウェブマーケティングを通じた効果的な採用戦略を提案します。無料のホームページ診断も提供し、介護事業の成功をサポートします。

Selenium VBAでタブのタイトルを指定して切り替える方法

Selenium VBAを使ってChromeを操作していると、2025年3月現在で初期のタブがデフォルトでアクティブにならなくなっています💦。その結果、プラグインのページが最初に開かれてしまい、思った通りの動作にならないことが発生しました。

プラグインを使わなければ回避できますが、それだと面倒なので、タブのタイトルを指定して正しく切り替える方法を追加しました😊。

問題の発生

これまで driver.Start "chrome" を使ってブラウザを開くと、以前はアクティブタブで処理が開始されていました。しかし、最近のSeleniumではデフォルトでプラグインのページが開かれるようになり、希望するタブが自動的に選ばれなくなりました。

Pythonでは簡単に解決できるコードが出てきますが、VBAで対応する方法を模索した結果、以下のコードに落ち着きました✨。

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

コードのポイント

  1. 最初のタブのタイトルを取得
    firstTitle = driver.Title で、現在開いているタブのタイトルを記録します。
  2. ループで各タブのタイトルをチェック
    driver.Title で現在のタブのタイトルを取得し、TARGET_TITLE を含んでいるか判定します。
  3. 指定のタイトルが見つかったらそのタブに留まる
    InStr(1, currentTitle, TARGET_TITLE, vbTextCompare) > 0 で、該当するタブならループを抜けます。
  4. 次のタブへ移動し、1周して元に戻ったら終了
    driver.SwitchToNextWindow で次のタブへ切り替え、最初のタブに戻ったら対象がないと判断して終了します🔄。

まとめ

この方法を使えば、VBAでも希望するタブを自動でアクティブにすることができます🎯。

Selenium VBAを使っている方は、ぜひ試してみてくださいね😊!