4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【SeleniumVBA】最速の導入・運用手順

4
Last updated at Posted at 2024-12-29

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 の乗換案内 を事例とした。

VBA
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記事に掲載。これ以外にも多数記事あり。

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?