SeleniumBasic + VBA スクレイピング 環境構築手順について

Excel VBAとSeleniumBasicを利用して
EdgeまたはChromeを自動操作し、Webサイトからデータを取得するマクロ(スクレイピング)を作成しました。その際に動作させるための環境構築手順をまとめたものです。

対象:

  • Windows 10 / 11
  • Excel 2016 以降(64bit対応済)
  • Edge / Chrome(いずれか)

2. 環境構成

項目内容
OSWindows 10 / 11 (64bit)
ExcelMicrosoft Excel 2016 / 2019 / 2021 / 365
SeleniumBasicv2.0.9.0(最終安定版)
ブラウザMicrosoft Edge または Google Chrome
WebDriverEdge用: edgedriver.exe / Chrome用: chromedriver.exe

3. 事前準備

3.1. 必要なファイルの取得

  1. SeleniumBasic本体
  2. 対応するWebDriver

4. 環境構築手順

4.1. SeleniumBasic のインストール

  1. ダウンロードしたSeleniumBasic-2.0.9.0.exe管理者として実行
  2. インストール先はデフォルトのまま(変更不要)。
  3. 完了後、以下のフォルダが作成される。: C:\Users\<ユーザー名>\AppData\Local\SeleniumBasic\  ※動作しない場合は、管理者権限にてSeleniumBasicをインストールしてください。その場合:C:\Program Files\SeleniumBasic\

4.2. WebDriverの配置

  1. 取得したWebDriverの配置
  2. 配置先:
    C:\Users\<ユーザー名>\AppData\Local\SeleniumBasic\ 又は、C:\Program Files\SeleniumBasic\
    • Edgeの場合
      ダウンロードした msedgedriver.exeedgedriver.exe にリネーム
    • Chromeの場合
      ダウンロードした chromedriver.exe → そのまま配置。

4.3. .NET Framework 3.5 の有効化

SeleniumBasicは古いCOMライブラリを利用するため、.NET Framework 3.5が必要です。※重要

有効化手順

  1. 設定 → アプリと機能 → Windowsの機能の有効化または無効化
  2. .NET Framework 3.5 (.NET 2.0 および 3.0を含む) にチェックを入れて有効化。
  3. 再起動。

4.3. Excel VBA の設定

  1. Excelを開き、[開発] → [VBAエディタ](Alt + F11
  2. 参照設定
    メニュー → [ツール] → [参照設定]
    • Selenium Type Library」にチェックを入れる。
  3. 保存

5. 動作確認手順

5.1. SeleniumBasic スクリプトで起動テスト

  1. 以下のフォルダにあるテストスクリプトを実行。: C:\Users\<ユーザー名>\AppData\Local\SeleniumBasic\Scripts\StartEdge.vbs
  2. Edgeブラウザが自動起動すれば正常。

5.2. VBA テストコードでの起動確認

以下のサンプルコードをVBAモジュールに貼り付け:

Option Explicit

Sub Test_Selenium()
    Dim drv As New Selenium.WebDriver
    drv.Start "edge"   ' または "chrome"
    drv.Get "https://www.google.com"
    MsgBox drv.Title
    drv.Quit
End Sub
  • ブラウザが起動し、タイトルが表示されればOK

6. ブラウザ更新時の対応

6.1. 問題が起きるタイミング

  • Edge/Chrome が自動更新されると、
  • SeleniumBasic に付属の edgedriver.exe / chromedriver.exe が古いままになり、
  • 「ポートを開けません」エラーや**「ordinalが見つからない」エラー**が発生。

6.2. 対応手順

  1. ブラウザのバージョンを確認。
    • Edge: … → ヘルプ → Microsoft Edge について
    • Chrome: 設定 → Chromeについて
  2. 同じメジャーバージョンのWebDriverを再ダウンロード。
  3. SeleniumBasicフォルダ内のドライバを入れ替え

7. トラブルシューティング

症状原因対策
ActiveX コンポーネントを作成できません (429)SeleniumBasic のCOM登録失敗SeleniumBasicを管理者権限で再インストール
TimeoutError: The driver failed to open the listening portWebDriverとブラウザのバージョン不一致対応するバージョンのドライバに差し替え
ordinalが見つからないWebDriverが古すぎる新しいバージョンに更新
#resultList が見つかりません検索結果画面でない検索条件入力後に一覧表示画面を開いた状態で実行

8. 運用上のポイント

  • Edge/Chromeの自動更新を抑制すると安定運用が可能。
    → 更新時はドライバも一緒に差し替える。
  • WebDriverは毎回取得せず、複数バージョンを保管しておくと復旧が早い。
  • トラブル発生時は、まず ブラウザとWebDriverのバージョン一致を最優先で確認。

9. サンプルソース

9.1. SeleniumBasic スクリプトでWEBサイト(yahoo)を開く

・参考にSelneniumでwebサイトを開く処理は、以下の通りです。

Option Explicit
'-------------------------
' グローバル変数/定数
'-------------------------
Public gDrv As Object                      ' Selenium.WebDriver(遅延バインディング)

'==================== 起動:固定プロファイル+新規タブ禁止 ====================
Public Sub StartEdge_Safe()
    On Error GoTo ErrH

    Dim profDir As String
    profDir = Environ$("LOCALAPPDATA") & "\WAM_SelProfile_Edge"

    If Dir(profDir, vbDirectory) = "" Then
        MkDir profDir
    End If

    On Error Resume Next
    Dim opt As Object
    Set opt = CreateObject("Selenium.EdgeOptions")
    On Error GoTo ErrH

    If Not opt Is Nothing Then
        opt.AddArgument "--user-data-dir=" & profDir
        opt.AddArgument "--no-first-run"
        opt.AddArgument "--no-default-browser-check"

        Set gDrv = CreateObject("Selenium.EdgeDriver")
        gDrv.Start opt
    Else
        Set gDrv = CreateObject("Selenium.EdgeDriver")

        On Error Resume Next
        gDrv.AddArgument "--user-data-dir=" & profDir
        gDrv.AddArgument "--no-first-run"
        gDrv.AddArgument "--no-default-browser-check"
        On Error GoTo ErrH

        On Error Resume Next
        gDrv.Start
        On Error GoTo ErrH
    End If

    gDrv.Get "https://www.yahoo.co.jp/"

    HookOpenSameTab

    Exit Sub

ErrH:
    MsgBox "StartEdge_Safe エラー内容: " & Err.Number & "行目 / " & Err.Description, vbExclamation
    Exit Sub

End Sub
'==================== 補助:新規タブ禁止フック ====================
Private Sub HookOpenSameTab()
    On Error Resume Next

    If gDrv Is Nothing Then
        Exit Sub
    End If

    gDrv.ExecuteScript _
        "var a=document.querySelectorAll('a[target=_blank]');" & _
        "for(var i=0;i<a.length;i++){a[i].removeAttribute('target');}"

    gDrv.ExecuteScript _
        "window._orig_open=window.open;" & _
        "window.open=function(u){" & _
        "  try{location.href=u;}catch(e){" & _
        "    if(window._orig_open){window._orig_open(u,'_self');}" & _
        "  }" & _
        "};"
End Sub

10. まとめ

  • SeleniumBasicは非常に軽量でVBAとの相性が良いが、WebDriverのバージョン管理が肝です。
  • ブラウザ更新時は必ずドライバも揃える。
  • 上記手順どおり構築すれば、別PCでも同じマクロを問題なく動かせます。

Share this content:

コメントを送信

CAPTCHA