「Excelからブラウザを動かして、面倒なWeb作業を自動化できたらいいのに…」と思ったこと、ありませんか?
結論から言うと、VBAからでもブラウザの自動操作はできます 、その定番が SeleniumVBA です、ブラウザを自動で動かす「Selenium」という仕組みを、ExcelやAccessのVBAから呼び出せるようにしたライブラリになります
しかも、専用のRPAツールを買ったり、別のソフトをインストールしたりしなくても、手元のExcel(マクロ)の延長でブラウザ操作を始められる のが手軽なところです
私はこれまで、VBAでもPythonでもブラウザ自動化をいろいろやってきました、VBA側だと長らく「SeleniumBasic」が定番だったんですが、こちらはもう更新が止まっていて、ドライバーの手動更新まわりで手間がかかるんですよね
その点 SeleniumVBA は、今もちゃんとメンテされていて、ドライバーの更新まで自動でやってくれる のが大きいです、この記事では、SeleniumVBAとは何かから、xlamアドインのインストール手順・基本的な使い方・ドライバーの自動更新まで、ブラウザ自動化が初めての方にも分かるように順を追って解説していきます
目次
SeleniumVBAとは?ExcelからブラウザをVBAで操作できる
まず「Selenium」から軽く説明しておきます
Seleniumは、ブラウザを自動で操作するための仕組み(プログラムからChromeやEdgeを動かす技術) です、もともとはWebサイトの自動テスト用に作られたもので、ページを開いたり、ボタンを押したり、入力欄に文字を打ち込んだり…といった「人がブラウザでやる操作」をコードで再現できます
その Selenium を、ExcelやAccessのVBAから呼び出せるようにしたライブラリ が SeleniumVBA です、GitHubの GCuser99/SeleniumVBA で公開されていて、無料で使えます
特徴をざっとまとめると、こんな感じです
Pure VBA … VBAだけで完結していて、外部の特別なソフトに依存しない
.NET Frameworkが不要 … 後述のSeleniumBasicと違って、追加ランタイムを入れずに動く
Windows + Microsoft Office(Excel / Access)で動く
Chrome / Edge / Firefox に対応している
今もメンテが続いている(2026年7月に確認した時点で、最新は2026年4月公開の v7.3 )
仕組みとしては、SeleniumVBAがローカルで動く「WebDriver」というサーバー(ブラウザを操作する仲介役)とやり取りして、その先のブラウザを動かす…という流れになります、このあたりはPythonのSeleniumと考え方は同じなので、両方触ったことがある方ならすんなり入れると思います
「WebDriver」は、ブラウザのバージョンごとに対応するものが必要です、Chromeを使うなら「ChromeDriver」が要る、という関係になっていて、ここの食い違いがブラウザ自動化でつまずきやすいポイントなんですが、SeleniumVBAはそこを自動でそろえてくれます(詳しくは後述します)
VBAでブラウザを操作する方法(IEオートメーションはもう使えない)
「VBAでブラウザ操作」を調べると、InternetExplorer.Application を使うやり方が今もたくさん出てきます、ただこの書き方はもう動きません 、Internet Explorer 11のサポートが2022年6月15日に終了して、iexplore.exe を起動してもEdgeに転送されるようになったためです
Chrome や Edge は、IEが使っていた ActiveX という仕組みに対応していません、そのため「操作するブラウザ名だけ差し替える」ような移行はできず、Seleniumを使うライブラリに乗り換えるのが基本になります
昔のIE用コードを直して延命するより、乗り換えたほうが早いです
2026年7月に確認した時点で、VBAからブラウザを操作する選択肢を並べるとこうなります
方法 今の状態 向いている人 IEオートメーション(InternetExplorer.Application) × 使えない(IE11は2022年6月15日にサポート終了) — SeleniumVBA ○ 更新が続いている(最新 v7.3・2026年4月) これから新しく始める人 SeleniumBasic △ 今も動くが更新は停止(v2.0.9.0・2016年3月が最後) すでに組んだ資産がある人
残る2つはどちらもSeleniumの仕組みを使うので、コードの書き味はよく似ています、では何が違うのかを次に整理します
SeleniumBasicとの違いは?なぜ今SeleniumVBAなのか
VBAでSeleniumというと、これまでは「SeleniumBasic」が定番でした、私もずっとお世話になってきたライブラリで、今でも普通に使えます
ただ、これから新しく始めるなら SeleniumVBA の方が扱いやすい場面が多いです、その理由を整理しておきます
.NET Framework 3.5 が要らない
SeleniumBasicは、古い .NET Framework 3.5 に依存しています、最近のWindowsだと初期状態でこれが入っておらず、別途有効化が必要になることがあって、導入の最初でつまずく方がそこそこいるんですよね
世代としても古い土台なので、将来のサポート面ではどうしても不安が残ります、その点 SeleniumVBAは.NETが不要 で、この前提条件まわりの面倒がそもそも発生しないのが大きな違いです
アプリのインストールが要らない
SeleniumBasicは、専用のソフトをインストーラーで入れる必要があります、一方の SeleniumVBA は、配布されているアドインファイル(.xlam)を読み込むだけで使えるので、ソフトのインストールそのものが不要 です
会社のPCでソフトのインストールが制限されている、みたいな環境でも導入のハードルが低いのは、意外と助かるポイントです
ドライバーの自動更新が標準で付いている
ブラウザ自動化で一番ありがちなトラブルが、ブラウザが自動更新されて、ドライバーのバージョンと合わなくなって動かなくなる パターンです
SeleniumBasicでこれを直すには、自分で新しいドライバーを落としてきて差し替える、という手動作業が必要でした、SeleniumVBAは ドライバーをそろえる仕組みが最初から組み込まれていて 、ここを自動でやってくれます、長く回すほどこの差が出ます
今もメンテが続いている
SeleniumBasicは、公開されているリポジトリの更新が 2016年3月のv2.0.9.0 で止まっています、一方の SeleniumVBA は2026年4月にも v7.3 が出ていて、メンテが続いているのは安心材料です(どちらも2026年7月に確認した時点)
もちろん「SeleniumBasicがもうダメ」という話ではなくて、既に資産があるならそのまま使えます、ただ これから新規で組むなら、土台の新しいSeleniumVBAの方が後々ラク 、という温度感です
項目 SeleniumVBA SeleniumBasic 導入方法 アドイン(.xlam)を読み込むだけ インストーラーでソフトを導入 .NET Framework 不要 3.5 が必要 ドライバー更新 自動でそろえられる 手動で差し替え メンテ状況 継続中(最新 v7.3・2026年4月) 2016年3月のv2.0.9.0で停止 対応ブラウザ Chrome / Edge / Firefox Chrome / Edge ほか
SeleniumVBAのダウンロードとインストール手順(xlamアドインが一番ラク)
導入方法は公式に何通りか用意されていますが、配布されている「SeleniumVBA.xlam」というアドインを取り込む方法が一番ラク なので、まずはこれをおすすめします
大まかな流れはこんな感じです
STEP
SeleniumVBA.xlam をダウンロードする
GitHubのリポジトリから、配布されている SeleniumVBA.xlam (アドインファイル)を入手します、分かりやすい場所に保存しておきます
STEP
VBAエディタで参照設定に追加する
Excelを開いてVBAエディタを起動し、メニューの「ツール」→「参照設定(References)」を開きます、「参照(Browse)」から先ほどの SeleniumVBA.xlam を選んで読み込みます
STEP
WebDriver クラスが使えるか確認する
参照設定にチェックが入った状態で、コード内に WebDriver と打って候補が出てくれば取り込み成功です、これで次のコードがそのまま書けるようになります
ほかにも、DLL登録用のインストーラーを使う方法や、ソースのクラス・標準モジュールを直接取り込む方法も公式に用意されています、ただ最初のうちは、参照設定するだけで済む xlamアドイン がいちばん迷わないと思います
SeleniumVBAの基本的な使い方
導入できたら、さっそく動かしてみます、まずは「Googleのトップページを開いて、検索ボックスの情報を取ってきて、ブラウザを閉じる」という基本的な流れを書いてみます
Dim driver As New WebDriver
driver.StartChrome
driver.OpenBrowser
driver.NavigateTo "https://www.google.com/"
driver.Wait 1000
Dim element As WebElement
Set element = driver.FindElement(By.Name, "q")
Debug.Print element.GetText
driver.CloseBrowser
driver.Shutdown
短いコードですが、ブラウザ自動化の基本がひととおり詰まっています、上から順に何をしているか見ていきます
StartChrome … Chrome用のWebDriverを起動する(Edgeなら StartEdge、Firefoxなら StartFirefox)
OpenBrowser … 実際にブラウザのウィンドウを開く
NavigateTo … 指定したURLのページへ移動する
Wait … 指定したミリ秒だけ待つ(ここでは1000=1秒)
FindElement … ページの中から目的の要素を探す(ここでは name属性が “q” の検索ボックス)
GetText … 見つけた要素のテキストを取り出す
CloseBrowser … ブラウザのウィンドウを閉じる
Shutdown … WebDriver(裏で動いていた仲介役)を終了する
流れとしては、起動 → ブラウザを開く → ページ移動 → 要素を探す → 値を取る → 閉じる という順番です、ここを押さえておけば、あとは「探す要素」と「取る/入れる値」を変えていくだけで、いろんな自動化に応用できます
ちなみに FindElement の探し方は、上の例の name 以外にも、id・class・CSSセレクタ・XPath などいくつか指定できます、このあたりの「要素の探し方」の考え方は、PythonのSeleniumとほぼ共通なので、片方を知っていればもう片方もすぐ馴染みます
クリックや入力・待機、そして要素の探し方をBy.CssSelector に寄せるコツなど、実際によく書くコードは続編の「SeleniumVBA実践コード集 」にまとめたので、基本が動いたらこちらも見てみてください
あわせて読みたい
SeleniumVBA実践コード集 クリック・入力・待機の書き方
SeleniumVBAで実際によく書くコードを実践編としてまとめました、要素の探し方をBy.CssSelectorに寄せるコツ、クリックや入力・待機やIsPresentでの存在チェック・プルダウン・複数要素ループ・スクショ・JS実行、そして便利なヘルパー関数まで、コピペで使える形で解説します
最後の CloseBrowser と Shutdown を忘れると、裏でWebDriverが起動したまま残ってしまうことがあります、処理の終わりにきちんと閉じる、という形にしておくのがおすすめです
📚 私のおすすめ本 PR
ジャンルごとに私のおすすめからランダムで5冊を表示しています
ドライバーの自動更新(SeleniumVBA最大の便利ポイント)
ここが、私がSeleniumVBAを推したい一番の理由です
前にも触れたとおり、ブラウザは勝手にバージョンアップしていくので、放っておくとドライバーとの組み合わせがズレて「昨日まで動いてたのに急に止まった」が起きます、SeleniumBasicだと、ここを自分で直す必要がありました
SeleniumVBAには WebDriverManager というクラスがあって、インストール済みのブラウザに合うドライバーを自動で検出して、必要なら自動でダウンロードしてくれます
明示的に呼ぶなら、こんな感じで書けます
Dim mngr As New WebDriverManager
Debug.Print mngr.AlignChromeDriverWithBrowser()
AlignChromeDriverWithBrowser が、「今入っているChromeに合うChromeDriverを用意する」処理です(Edge・Firefox向けの対応するメソッドもあります)、公式の説明によると、StartChrome などでドライバーを起動するときにも、ブラウザに合うドライバーを自動で検出してそろえてくれる仕組みになっています
つまり、普段は特別なことを意識しなくても、ブラウザに合ったドライバーが用意される ということです、SeleniumBasicの頃にちまちまドライバーを差し替えていた手間を思うと、ここは素直にありがたいです
SeleniumBasic側でドライバーをどう手動更新するかは、別記事「VBAでChromeDriverを自動更新する方法 」でまとめています、SeleniumVBAだと、ここで書いた仕組みが標準で備わっている、という対比で読んでもらえると違いが分かりやすいと思います
SeleniumVBAはどんなことに使える?
ブラウザを自動で操作できると、できることの幅がかなり広がります、私が実務でブラウザ自動化を使ってきた中だと、ざっくり次のような場面が定番です
Webスクレイピング(情報の収集)
ページを開いて、必要な情報を読み取ってExcelに書き出す…というスクレイピング は、ブラウザ自動化の王道の使い道です
たとえば、複数ページにまたがる一覧から欲しいデータだけ拾ってきて表にまとめる、みたいな作業、手でやると気が遠くなりますが、SeleniumVBAなら NavigateTo でページを順に開いて FindElement で値を取る、という流れで回せます
スクレイピングをするときは、対象サイトの利用規約やrobots.txtを確認して、相手のサーバーに負荷をかけすぎないようにするのが大切です、待機(Wait )を挟むなど、節度を持って使うようにしてください
ブラウザ操作の自動化(RPA的な使い方)
もうひとつが、毎日のようにやっているブラウザ作業を丸ごと自動化する 、いわゆるRPA的な使い方です
ログインして、決まった画面を開いて、入力して、ボタンを押して…という一連の操作を、ExcelのVBAから流せます、Excelに置いた一覧を読みながら順番に処理する、みたいなこともできるので、Excelが得意なデータ管理と、ブラウザ操作を1つにまとめられる のがVBAでやる強みです
専用のRPAツールを別途用意しなくても、すでに手元にあるExcelの延長で組めるのは、実務だとうれしいポイントだと思います
SeleniumVBAを使うときの注意点
便利なSeleniumVBAですが、始める前に知っておきたい前提もいくつかあります
Windows + Microsoft Office が前提 … ExcelやAccessのVBAから使うライブラリなので、その環境がベースになります
操作するブラウザが必要 … Chrome / Edge / Firefox のいずれかがインストールされている前提です
アドイン(.xlam)の読み込み・マクロ実行が前提 … 普段アドインを使わない方は最初の取り込みで少し戸惑うかもしれません、会社のPCだとマクロやアドインがセキュリティポリシーで制限されていることもあるので、自分の環境で使えるかを確認してから始めるのがおすすめです
初回はドライバーのダウンロードが入る … 自動でそろえてくれる分、最初の実行時にドライバーの取得が走ることがあります
日本語の情報はまだ少なめ … 比較的新しいので、困ったときは公式リポジトリの情報を当たる場面が多めです
とはいえ、コードの書き味そのものはSeleniumらしい素直な作りで、PythonやSeleniumBasicを触ったことがあれば StartChrome → NavigateTo → FindElement の流れはすぐ掴めると思います、最初のドライバー取得さえ越えれば、あとは快適です
SeleniumBasicという選択肢もある
ここまで SeleniumVBA を中心に紹介してきましたが、VBAでのブラウザ自動化には SeleniumBasic という長く使われてきた選択肢もあります
ざっくり選び分けると、こんな感じで考えると分かりやすいです
これから新しく始めるなら … .NET不要でドライバー自動更新つきの SeleniumVBA が扱いやすい
すでにSeleniumBasicの資産があるなら … そのまま使える、ただしドライバーは手動更新が必要になる
SeleniumBasicをこれから入れてみたい方は、導入手順を「SeleniumBasicの導入方法 」でまとめているので、そちらを見てもらえれば一通りそろいます
ドライバーの手動更新まわりでつまずいたときは、「VBAでChromeDriverを自動更新する方法 」が役立つはずです、SeleniumVBAの「自動でそろう」仕組みと読み比べると、それぞれの立ち位置がよりはっきりすると思います
ORDER
このブラウザ操作、代わりに自動化します
記事どおりに動かない・作る時間がないときは、代わりに作ります 会社員の副業なので、対応は平日夜と土日です
ココナラ 12,000円〜
会社からのご依頼も、契約と支払いはココナラ・クラウドワークスを通します(個人で受けています)
はじめての方へ:ココナラで頼む流れ / クラウドワークスで頼む流れ
スクレイピングは先に依頼の考え方 を読んでもらうと話が早いです
まとめ
SeleniumVBAは、ExcelやAccessのVBAからブラウザを自動操作できるライブラリ で、Seleniumの仕組みをそのままVBAから使えるのが魅力です
あらためてポイントを整理すると、こんなところです
SeleniumVBAなら、ExcelのVBAからChrome / Edge / Firefox を自動操作できる
SeleniumBasicと違って .NETが不要 で、ドライバーの更新も自動でそろえてくれる
導入は xlamアドイン を参照設定するのが一番ラク
基本は StartChrome → NavigateTo → FindElement → GetText → CloseBrowser の流れ
スクレイピングやRPA的な作業まで、幅広く応用できる
これからExcelでブラウザ操作を始めるなら、自動更新つきで土台の新しい SeleniumVBA はかなり心強い選択肢だと思います、まずは今回の基本コードを動かすところから、気軽に試してみてください
📚 私のおすすめ本 PR
ジャンルごとに私のおすすめからランダムで5冊を表示しています
コメント