PR
私が使っているPCガジェット類
作業環境で実際に使っている・気になっている周辺機器などをまとめました
※ 一部のリンクは広告(アフィリエイト)を含みます
作業環境で実際に使っている・気になっている周辺機器などをまとめました
※ 一部のリンクは広告(アフィリエイト)を含みます
「Excelからブラウザを動かして、面倒なWeb作業を自動化できたらいいのに…」と思ったこと、ありませんか?
結論から言うと、VBAからでもブラウザの自動操作はできます、その定番が SeleniumVBA です、ブラウザを自動で動かす「Selenium」という仕組みを、ExcelやAccessのVBAから呼び出せるようにしたライブラリになります
しかも、専用のRPAツールを買ったり、別のソフトをインストールしたりしなくても、手元のExcel(マクロ)の延長でブラウザ操作を始められるのが手軽なところです
私はこれまで、VBAでもPythonでもブラウザ自動化をいろいろやってきました、VBA側だと長らく「SeleniumBasic」が定番だったんですが、こちらはもう更新が止まっていて、ドライバーの手動更新まわりで手間がかかるんですよね
その点 SeleniumVBA は、今もちゃんとメンテされていて、ドライバーの更新まで自動でやってくれるのが大きいです、この記事では、SeleniumVBAとは何かから、xlamアドインのインストール手順・基本的な使い方・ドライバーの自動更新まで、ブラウザ自動化が初めての方にも分かるように順を追って解説していきます
まず「Selenium」から軽く説明しておきます
Seleniumは、ブラウザを自動で操作するための仕組み(プログラムからChromeやEdgeを動かす技術)です、もともとはWebサイトの自動テスト用に作られたもので、ページを開いたり、ボタンを押したり、入力欄に文字を打ち込んだり…といった「人がブラウザでやる操作」をコードで再現できます
その Selenium を、ExcelやAccessのVBAから呼び出せるようにしたライブラリが SeleniumVBA です、GitHubの GCuser99/SeleniumVBA で公開されていて、無料で使えます
特徴をざっとまとめると、こんな感じです
仕組みとしては、SeleniumVBAがローカルで動く「WebDriver」というサーバー(ブラウザを操作する仲介役)とやり取りして、その先のブラウザを動かす…という流れになります、このあたりはPythonのSeleniumと考え方は同じなので、両方触ったことがある方ならすんなり入れると思います
「WebDriver」は、ブラウザのバージョンごとに対応するものが必要です、Chromeを使うなら「ChromeDriver」が要る、という関係になっていて、ここの食い違いがブラウザ自動化でつまずきやすいポイントなんですが、SeleniumVBAはそこを自動でそろえてくれます(詳しくは後述します)
「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の仕組みを使うので、コードの書き味はよく似ています、では何が違うのかを次に整理します
VBAでSeleniumというと、これまでは「SeleniumBasic」が定番でした、私もずっとお世話になってきたライブラリで、今でも普通に使えます
ただ、これから新しく始めるなら SeleniumVBA の方が扱いやすい場面が多いです、その理由を整理しておきます
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」というアドインを取り込む方法が一番ラクなので、まずはこれをおすすめします
大まかな流れはこんな感じです
GitHubのリポジトリから、配布されている SeleniumVBA.xlam(アドインファイル)を入手します、分かりやすい場所に保存しておきます
Excelを開いてVBAエディタを起動し、メニューの「ツール」→「参照設定(References)」を開きます、「参照(Browse)」から先ほどの SeleniumVBA.xlam を選んで読み込みます
参照設定にチェックが入った状態で、コード内に WebDriver と打って候補が出てくれば取り込み成功です、これで次のコードがそのまま書けるようになります
ほかにも、DLL登録用のインストーラーを使う方法や、ソースのクラス・標準モジュールを直接取り込む方法も公式に用意されています、ただ最初のうちは、参照設定するだけで済む xlamアドインがいちばん迷わないと思います
導入できたら、さっそく動かしてみます、まずは「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短いコードですが、ブラウザ自動化の基本がひととおり詰まっています、上から順に何をしているか見ていきます
流れとしては、起動 → ブラウザを開く → ページ移動 → 要素を探す → 値を取る → 閉じるという順番です、ここを押さえておけば、あとは「探す要素」と「取る/入れる値」を変えていくだけで、いろんな自動化に応用できます
ちなみに FindElement の探し方は、上の例の name 以外にも、id・class・CSSセレクタ・XPath などいくつか指定できます、このあたりの「要素の探し方」の考え方は、PythonのSeleniumとほぼ共通なので、片方を知っていればもう片方もすぐ馴染みます
クリックや入力・待機、そして要素の探し方をBy.CssSelectorに寄せるコツなど、実際によく書くコードは続編の「SeleniumVBA実践コード集」にまとめたので、基本が動いたらこちらも見てみてください


最後の CloseBrowser と Shutdown を忘れると、裏でWebDriverが起動したまま残ってしまうことがあります、処理の終わりにきちんと閉じる、という形にしておくのがおすすめです
ここが、私がSeleniumVBAを推したい一番の理由です
前にも触れたとおり、ブラウザは勝手にバージョンアップしていくので、放っておくとドライバーとの組み合わせがズレて「昨日まで動いてたのに急に止まった」が起きます、SeleniumBasicだと、ここを自分で直す必要がありました
SeleniumVBAには WebDriverManager というクラスがあって、インストール済みのブラウザに合うドライバーを自動で検出して、必要なら自動でダウンロードしてくれます
明示的に呼ぶなら、こんな感じで書けます
Dim mngr As New WebDriverManager
Debug.Print mngr.AlignChromeDriverWithBrowser()AlignChromeDriverWithBrowser が、「今入っているChromeに合うChromeDriverを用意する」処理です(Edge・Firefox向けの対応するメソッドもあります)、公式の説明によると、StartChrome などでドライバーを起動するときにも、ブラウザに合うドライバーを自動で検出してそろえてくれる仕組みになっています
つまり、普段は特別なことを意識しなくても、ブラウザに合ったドライバーが用意されるということです、SeleniumBasicの頃にちまちまドライバーを差し替えていた手間を思うと、ここは素直にありがたいです
SeleniumBasic側でドライバーをどう手動更新するかは、別記事「VBAでChromeDriverを自動更新する方法」でまとめています、SeleniumVBAだと、ここで書いた仕組みが標準で備わっている、という対比で読んでもらえると違いが分かりやすいと思います
ブラウザを自動で操作できると、できることの幅がかなり広がります、私が実務でブラウザ自動化を使ってきた中だと、ざっくり次のような場面が定番です
ページを開いて、必要な情報を読み取ってExcelに書き出す…というスクレイピングは、ブラウザ自動化の王道の使い道です
たとえば、複数ページにまたがる一覧から欲しいデータだけ拾ってきて表にまとめる、みたいな作業、手でやると気が遠くなりますが、SeleniumVBAなら NavigateTo でページを順に開いて FindElement で値を取る、という流れで回せます
スクレイピングをするときは、対象サイトの利用規約やrobots.txtを確認して、相手のサーバーに負荷をかけすぎないようにするのが大切です、待機(Wait)を挟むなど、節度を持って使うようにしてください
もうひとつが、毎日のようにやっているブラウザ作業を丸ごと自動化する、いわゆるRPA的な使い方です
ログインして、決まった画面を開いて、入力して、ボタンを押して…という一連の操作を、ExcelのVBAから流せます、Excelに置いた一覧を読みながら順番に処理する、みたいなこともできるので、Excelが得意なデータ管理と、ブラウザ操作を1つにまとめられるのがVBAでやる強みです
専用のRPAツールを別途用意しなくても、すでに手元にあるExcelの延長で組めるのは、実務だとうれしいポイントだと思います
便利なSeleniumVBAですが、始める前に知っておきたい前提もいくつかあります
とはいえ、コードの書き味そのものはSeleniumらしい素直な作りで、PythonやSeleniumBasicを触ったことがあれば StartChrome → NavigateTo → FindElement の流れはすぐ掴めると思います、最初のドライバー取得さえ越えれば、あとは快適です
ここまで SeleniumVBA を中心に紹介してきましたが、VBAでのブラウザ自動化には SeleniumBasic という長く使われてきた選択肢もあります
ざっくり選び分けると、こんな感じで考えると分かりやすいです
SeleniumBasicをこれから入れてみたい方は、導入手順を「SeleniumBasicの導入方法」でまとめているので、そちらを見てもらえれば一通りそろいます
ドライバーの手動更新まわりでつまずいたときは、「VBAでChromeDriverを自動更新する方法」が役立つはずです、SeleniumVBAの「自動でそろう」仕組みと読み比べると、それぞれの立ち位置がよりはっきりすると思います
SeleniumVBAは、ExcelやAccessのVBAからブラウザを自動操作できるライブラリで、Seleniumの仕組みをそのままVBAから使えるのが魅力です
あらためてポイントを整理すると、こんなところです
これからExcelでブラウザ操作を始めるなら、自動更新つきで土台の新しい SeleniumVBA はかなり心強い選択肢だと思います、まずは今回の基本コードを動かすところから、気軽に試してみてください
PythonとExcelを中心に仕事に役立つ業務ツールや自動化、スクレイピングツールの作成を受注していて、クラウドワークスでは気が付けば100件以上のお仕事を受注してきました!
会社員をやりながらの副業なので時間の捻出は相応ですが、クライアントの方々と近い立場でこちらからも提案しながら活動していますのでお悩みあれば是非ご相談ください
VBAとPythonを中心にユーザー側でできるITを自己学習しているので備忘録半分、学習履歴を残して同じ道を辿る人の参考になればとブログを始めました
副業でスクレイピングツール作成を中心にできることを色々やっていますのでご相談いただけるとありがたいです!
クラウドワークスのページへ
ココナラのページへ
コメント