1
1

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】最速の導入・運用手順

Last updated at Posted at 2024-12-29

1 はじめに

SeleniumVBAは、TinySeleniumVBA(作成者は日本の方)をベースに機能を拡張したツールの名称で、GCuser99氏により作成された。プログラム言語のVBAを用いてWebDriverと通信することによりWEBブラウザの操作を自動化できる。

SeleniumVBAの用語は様々な意味で使われることがあるが、ここではGCuser99氏によるツールの名称をSeleniumVBAと定義している。

VBAを用いてブラウザを操作する他のツールとして、SeleniumBasicおよびZeroInstall BrowserDriver for VBAが挙げられる(下図参照)。

1751059850-4ThSs9l51OiCbDQWJRkmXxB0.png

SeleniumBasicとの比較
【メリット】
インストール不要でExcelで動作するためファイルのやりとりが容易
・サポート切れが心配な.NET Framework3.5の有効化も不要
WebDriver自動更新機能が標準装備
バージョンアップ、バグフィックスへの対応あり
・標準モジュールにサンプルコードが多数掲載
ExecuteCDPによるCDPの多彩な機能が利用可能(一部制限あり)
ShadowRoot要素検索でJavaScriptが不要な専用メソッド有
・VBAだけで処理が完結するためカスタマイズが容易
・未実装だがWebDriver BiDiの対応も技術的に可能

【デメリット】
・他のサイトの参考記事が少なく、AIが生成するコードに誤りが多い
 ⇒私が経験した事をnote記事に掲載。生成AIが学習することを期待
・高機能である反面、Microsoft Defenderの誤検知が発生しやすい
 ⇒当面の間ファイルにパスワードを設定する運用で対応

2 xlsmファイルのダウンロード

ファイルダウンロード(公式サイト)(パスワードは123)

2025年10月23日時点の最新バージョンは6.9
xlam(アドイン)形式のファイルは、2024年3月以降、提供停止
・対象ブラウザは、EdgeChrome、FireFox(機能制限があり非推奨)
EdgeのIEモードはバージョン5.9から非対応

3 セキュリティおよびVBEの設定

・ xlsmファイルのアイコン右クリック ⇒ 「プロパティ」 ⇒ 「許可する」
・「セキュリティの警告」メッセージ
・「コンテンツの有効化」ボタンを押すと消える
・「OneDriveで運用している場合」"自動保存がオフです"メッセージ
・パスワード付きファイルの場合「自動保存オフ」が必須
・「ファイル」⇒「オプション」⇒「保存」からチェックを外すと消える
・「開発」タブ ⇒ 「Visual Basic」ボタン ⇒ 「ツール」⇒ 「オプション」
・「編集」タブ ⇒ 「変数の宣言を強制する」にチェック
・「全般」タブ ⇒ エラートラップ「エラー処理対象外のエラーで中断」

4 動作確認

「SeleniumVBA.xlsm」内の標準モジュール「test_ActionChains」をVBE上から実行して、Edgeが起動して画面が動いていればOK

Chromeブラウザの利用はコードを「driver.StartEdge」を「driver.StartChrome」に変更してから実行。

この時点でWebDriverがダウンロードフォルダに自動ダウンロードされる。

5 運用

この「SeleniumVBA.xlsm」一つで運用でき、ファイル名を変更しても動作に支障はなし。なお、配布する場合はこちらを参照

運用開始時は、新規に標準モジュールを作成してコードを記述。ワークシートにはデータ入出力および実行ボタン作成エリアとして運用

SeleniumBasicをSeleniumVBAに変換する記事 SeleniumBasicからのコード変換方法 を掲載。

SeleniumVBAのバージョンアップの際は、モジュールを差し替える必要があるが、バージョンアップ作業が楽になるExcelマクロ がある。

6 サンプルコード

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 が省略されているケースが見受けられるが、省略できないので注意が必要

7 公式Wiki

公式Wikiページはこちら(GitHub)。困った時はDicussionで質問することも可

SeleniumVBA.xlsmの「test_」で始まる標準モジュールに、実務で有用とされる多数のサンプルコードが掲載

8 参考記事

私が実務で経験したノウハウをnote記事に掲載。これ以外にも多数記事あり。

1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?