SeleniumBasic + VBA スクレイピング 環境構築手順について
Excel VBAとSeleniumBasicを利用して
EdgeまたはChromeを自動操作し、Webサイトからデータを取得するマクロ(スクレイピング)を作成しました。その際に動作させるための環境構築手順をまとめたものです。
対象:
- Windows 10 / 11
- Excel 2016 以降(64bit対応済)
- Edge / Chrome(いずれか)
2. 環境構成
| 項目 | 内容 |
|---|---|
| OS | Windows 10 / 11 (64bit) |
| Excel | Microsoft Excel 2016 / 2019 / 2021 / 365 |
| SeleniumBasic | v2.0.9.0(最終安定版) |
| ブラウザ | Microsoft Edge または Google Chrome |
| WebDriver | Edge用: edgedriver.exe / Chrome用: chromedriver.exe |
3. 事前準備
3.1. 必要なファイルの取得
- SeleniumBasic本体
- ダウンロードサイト(推奨):
https://github.com/florentbr/SeleniumBasic/releases - ファイル名例:
SeleniumBasic-2.0.9.0.exe
- ダウンロードサイト(推奨):
- 対応するWebDriver
- Edge:
Microsoft Edge WebDriver
→ PCのEdgeバージョンに合わせた 同じメジャーバージョンをダウンロード。 - Chrome:
ChromeDriver ダウンロード
→ Chromeと同じメジャーバージョンを選択。
- Edge:
4. 環境構築手順
4.1. SeleniumBasic のインストール
ダウンロードしたSeleniumBasic-2.0.9.0.exeを 管理者として実行。- インストール先はデフォルトのまま(変更不要)。
- 完了後、以下のフォルダが作成される。:
C:\Users\<ユーザー名>\AppData\Local\SeleniumBasic\※動作しない場合は、管理者権限にてSeleniumBasicをインストールしてください。その場合:C:\Program Files\SeleniumBasic\
4.2. WebDriverの配置
- 取得したWebDriverの配置
- 配置先:
C:\Users\<ユーザー名>\AppData\Local\SeleniumBasic\又は、C:\Program Files\SeleniumBasic\- Edgeの場合:
ダウンロードしたmsedgedriver.exe→edgedriver.exeにリネーム。 - Chromeの場合:
ダウンロードしたchromedriver.exe→ そのまま配置。
- Edgeの場合:
4.3. .NET Framework 3.5 の有効化
SeleniumBasicは古いCOMライブラリを利用するため、.NET Framework 3.5が必要です。※重要
有効化手順
- 設定 → アプリと機能 → Windowsの機能の有効化または無効化。
- .NET Framework 3.5 (.NET 2.0 および 3.0を含む) にチェックを入れて有効化。
- 再起動。
4.3. Excel VBA の設定
- Excelを開き、[開発] → [VBAエディタ](
Alt + F11) - 参照設定
メニュー → [ツール] → [参照設定]- 「Selenium Type Library」にチェックを入れる。
- 保存
5. 動作確認手順
5.1. SeleniumBasic スクリプトで起動テスト
- 以下のフォルダにあるテストスクリプトを実行。:
C:\Users\<ユーザー名>\AppData\Local\SeleniumBasic\Scripts\StartEdge.vbs - 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. 対応手順
- ブラウザのバージョンを確認。
- Edge:
… → ヘルプ → Microsoft Edge について - Chrome:
設定 → Chromeについて
- Edge:
- 同じメジャーバージョンのWebDriverを再ダウンロード。
SeleniumBasicフォルダ内のドライバを入れ替え。
7. トラブルシューティング
| 症状 | 原因 | 対策 |
|---|---|---|
ActiveX コンポーネントを作成できません (429) | SeleniumBasic のCOM登録失敗 | SeleniumBasicを管理者権限で再インストール |
TimeoutError: The driver failed to open the listening port | WebDriverとブラウザのバージョン不一致 | 対応するバージョンのドライバに差し替え |
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:
コメントを送信