1 はじめに
SeleniumVBAはインストール不要でありながら高機能で実用的なブラウザ操作自動化(Webスクレイピング)ツールであり、GCuser99氏により作成された。VBAを用いてW3C標準のWebDriverと通信することにより、高度なブラウザ操作を実現している。
WebDriverはダウンロードしてフォルダに置くだけで動作するため、インストールは不要となる。
VBA+WebDriverによりブラウザを操作するSelenium型ツールとして、他にSeleniumBasicがあるが、開発者、コードベース、アーキテクチャも異なるため区別が必要となる。
SeleniumBasicとの比較
【メリット】
・インストール不要でExcelで動作するためファイルのやりとりが容易
・2029年1月9日にサポート終了する.NET Framework3.5に依存しない
・WebDriver自動更新機能が標準装備
・バージョンアップ、バグフィックスへの対応あり
・標準モジュールにサンプルコードが多数掲載
・ExecuteCDPによるCDPの多彩な機能が利用可能(一部制限あり)
・ShadowRoot要素検索でJavaScriptが不要な専用メソッド有
・VBAだけで処理が完結するためカスタマイズが容易
・拡張版適用でWebDriver BiDiの対応も可能
【デメリット】
・AIが生成するコードに誤りが多い
⇒ WebDriverクラスをAIに読み込ませるとよい
・高機能が影響して、以前はDefenderの誤検知が起こることがあった
⇒ ver7.2以降は改善した
2 ターゲット層
・追加インストールが制限される企業ユーザー
・複雑なWebサイトの操作を必要とするユーザー
・Excel-VBAを業務基盤とする実務担当者
・SeleniumBasicからの移行を検討中のユーザー
・IE自動化からの移行を検討中のユーザー
・既存のVBA資産にブラウザ操作を追加するユーザー
・W3C非準拠のCDP依存から脱却したいユーザー
3 xlsmのダウンロード(公式サイト)
・ SelwniumVBA.xlsm ver7.3 (VirusTotal検知ゼロ)
2026年4月17日時点の最新バージョンは7.3
・xlam(アドイン)形式のファイルは、2024年3月以降、提供停止
・対象ブラウザは、Edge、Chrome、FireFox(機能制限があり非推奨)
・EdgeのIEモードはバージョン5.9から非対応。
4 セキュリティおよびVBEの設定
- ・xlsmファイルのアイコン右クリック ⇒ 「プロパティ」 ⇒ 「許可する」
- ・「セキュリティの警告」メッセージ
- ・「コンテンツの有効化」ボタンを押すと消える
- ・「OneDriveで運用している場合」"自動保存がオフです"メッセージ
- ・パスワード付きファイルの場合「自動保存オフ」が必須
- ・「ファイル」⇒「オプション」⇒「保存」からチェックを外すと消える
- ・「開発」タブ ⇒ 「Visual Basic」ボタン ⇒ 「ツール」⇒ 「オプション」
- ・「編集」タブ ⇒ 「変数の宣言を強制する」にチェック
- ・「全般」タブ ⇒ エラートラップ「エラー処理対象外のエラーで中断」
- ・ Officeバージョン2507以前の環境で使用する場合
- ・「ツール」「参照設定」からMicrosoft VBScript RegularExpressons5.5にチェック
5 動作確認
「SeleniumVBA.xlsm」内の標準モジュール「test_ActionChains」をVBE上から実行して、Edgeが起動して画面が動いていればOK
Chromeブラウザの利用はコードを「driver.StartEdge」を「driver.StartChrome」に変更してから実行。
この時点でWebDriverがダウンロードフォルダに自動ダウンロードされる。
「i-Filter」によりブロックされる場合は、この記事が参考になる。
6 運用
この「SeleniumVBA.xlsm」一つで運用でき、ファイル名を変更しても動作に支障はなし。なお、配布する場合はこちらを参照
運用開始時は、新規に標準モジュールを作成してコードを記述。ワークシートにはデータ入出力および実行ボタン作成エリアとして運用
SeleniumBasicをSeleniumVBAに変換する記事 SeleniumBasicからの移行について を掲載。
SeleniumVBAのバージョンアップの際は、モジュールを差し替える必要があるが、バージョンアップ作業が楽になるExcelマクロ がある。
7 サンプルコード
Yahoo! JAPAN の乗換案内 を事例とした。
Option Explicit
Sub Sample()
'WebDriverの宣言
Dim driver As WebDriver
Set driver = New WebDriver
With driver
'WebDriverを起動する
.StartEdge
'ブラウザを起動する(この記述は省略不可)
.OpenBrowser
'サイトを開く
.NavigateTo "https://transit.yahoo.co.jp/"
'入力フォームに文字入力して検索ボタンをクリックする
Dim elm As WebElement
'出発:東京
Set elm = .FindElement(By.XPath, "//input[@name='from']")
elm.SendKeys "東京"
'到着:新宿
Set elm = .FindElement(By.XPath, "//input[@name='to']")
elm.SendKeys "新宿"
'検索ボタンクリック
Set elm = .FindElement(By.XPath, "//input[@value='検索']")
elm.Click
'ブラウザを終了する
.CloseBrowser
'WebDriverを終了する
.Shutdown
End With
End Sub
AIが提示するコードで、driver.OpenBrowser が省略されているケースが見受けられるが、省略できないので注意が必要
8 公式Wiki
公式Wikiページはこちら(GitHub)。困った時はDicussionで質問することも可
SeleniumVBA.xlsmの「test_」で始まる標準モジュールに、実務で有用とされる多数のサンプルコードが掲載
9 参考記事
私が実務で経験したノウハウをnote記事に掲載。これ以外にも多数記事あり。