概要
Internet Explorer 用の InternetExplorer.Application オブジェクトは廃止方向となり、Windows 10 以降では Microsoft Edge の自動操作が推奨されています。本記事では SeleniumBasic と EdgeDriver を用いて、Excel VBA から Edge を起動し、ページ読み込み完了後に特定要素のテキストを取得する手順を解説いたします。例としてサイト https://morinokabu.com/ の要素 id="Article" を取得します。
事前準備
| 項目 | 手順 |
|---|---|
| SeleniumBasic | GitHub のリリースページからインストーラーをダウンロードし、通常インストールします。 |
| EdgeDriver | Microsoft 公式サイトから使用中の Edge バージョンに対応する msedgedriver.exe を取得し、C:\SeleniumBasic フォルダー(既定の SeleniumBasic インストール先)へ配置します。 |
| 参照設定 | VBA エディターで [ツール] → [参照設定] → “Selenium Type Library” にチェックを入れます。 |
サンプルコード
Option Explicit
' 参照設定: Selenium Type Library が必要です
Sub FetchArticleText()
Dim pageURL As String ' 取得対象の URL
Dim driver As New Selenium.EdgeDriver
Dim pageText As String
pageURL = "https://morinokabu.com/"
' Edge を起動しページを開く
driver.Start
driver.Get pageURL
' 読み込み完了を待機(document.readyState が "complete" になるまでループ)
Do While driver.ExecuteScript("return document.readyState") <> "complete"
DoEvents
Loop
' id="Article" のテキストを取得
pageText = driver.FindElementById("Article").Text
' 結果をメッセージボックスで確認
MsgBox pageText, vbInformation, "取得したテキスト"
driver.Quit
End Sub
ポイント解説
| 項目 | 説明 |
|---|---|
driver.ExecuteScript("return document.readyState") | JavaScript を実行し、ページの読み込み状態を取得します。"loading" → "interactive" → "complete" の順で遷移します。 |
DoEvents | 待機ループ中に VBA の画面更新や割り込みを許可し、応答不能状態を防ぎます。 |
FindElementById("Article").Text | 指定 ID の要素テキストを取得します。クラスや XPath を使用した検索も可能です。 |
ReadyState と document.readyState の対応表
| IE 用数値 | IE 用定数 | Edge(Selenium)での状態 | 説明 |
|---|---|---|---|
| 0 | READYSTATE_UNINITIALIZED | – | 初期化前 |
| 1 | READYSTATE_LOADING | "loading" | 読み込み中 |
| 2 | READYSTATE_LOADED | "interactive" | DOM 構築完了、サブリソース未完了 |
| 3 | READYSTATE_INTERACTIVE | "interactive" | 同上 |
| 4 | READYSTATE_COMPLETE | "complete" | すべてのリソース読み込み完了 |
応用アイデア
| 目的 | 実装例 |
|---|---|
| 要素が描画されるまで待機 | driver.Wait 10000, "id=Article" で最大 10 秒待機 |
| ページ内の複数要素を抽出 | driver.FindElementsByCss("div.article-item") でコレクション取得 |
| スクロールが必要なページ | driver.ExecuteScript "window.scrollTo(0, document.body.scrollHeight);" で最下部までスクロール |
まとめ
SeleniumBasic と EdgeDriver を組み合わせると、Excel VBA でも Microsoft Edge のページ読み込み完了を厳密に検知し、DOM 要素を自在に取得できます。従来の IE 自動操作コードを Edge へ移行する際は、本記事の手順とコードをベースにカスタマイズしていただくとスムーズです。
技術書の購入コストを抑えてスキルアップするなら

ここまで読んでいただきありがとうございます。最後に宣伝をさせてください。
プログラミングの技術書や参考書は、1冊3,000円〜5,000円するものも多く、出費がかさみがちです。Kindle Unlimitedであれば、月額980円で500万冊以上の書籍が読み放題となります。
気になる言語の入門書から、アルゴリズム、基本設計の専門書まで、手元のスマホやPCですぐに参照可能です。現在は「30日間の無料体験」や、対象者限定の「3か月499円プラン」なども実施されています。まずはご自身のアカウントでどのようなオファーが表示されるか確認してみてください。
