概要
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 へ移行する際は、本記事の手順とコードをベースにカスタマイズしていただくとスムーズです。
副業から独立まで「稼げる」Webスキルを習得する(PR)
ここまで読んでいただきありがとうございます。 最後に宣伝をさせてください。
「副業を始めたいが、何から手をつければいいかわからない」「独学でスキルはついたが、収益化できていない」という悩みを持つ方には、マンツーマン指導のWebスクール**「メイカラ」**が適しています。
このスクールは、単に技術を教えるだけでなく、**「副業として具体的にどう稼ぐか」**という実務直結のノウハウ提供に特化している点が特徴です。
講師陣は、実際に「副業Webライターから1年で独立して月収100万円」を達成したプロや、現役で利益を出し続けているブロガーなど、確かな実績を持つプレイヤーのみで構成されています。そのため、机上の空論ではない、現場で通用する戦術を学ぶことができます。
副業に特化した強み
- 最短ルートの提示: 未経験からでも実績を出せるよう、マンツーマンで指導。
- AI活用の習得: 副業の時間対効果を最大化するための、正しいAI活用スキルも網羅。
- 案件獲得のチャンス: 運営がWebマーケティング会社であるため、実力次第で社内案件の紹介など、仕事に直結する可能性があります。
受講者の多くは、「在宅でできる仕事を探している」「副業を頑張りたい」という20代・30代・40代が中心です。
受講前には、講師による無料説明が行われます。無理な勧誘はなく、自分に合った副業スタイルやプランを相談できるため、まずは話を聞いてみることから始めてみてはいかがでしょうか。
