はじめに
Windows 10 以降では Internet Explorer の自動操作が推奨されておらず、Microsoft Edge を用いたスクレイピングが主流です。本記事では SeleniumBasic と EdgeDriver を使用し、ページ読み込み後に特定クラスの要素を取得して Excel シートへ書き込む手順を解説いたします。例としてサイト https://morinokabu.com/ を対象とします。
前提環境
| 項目 | 内容 |
|---|---|
| OS | Windows 10 / 11 |
| Excel | Microsoft 365 または Excel 2016 以降 |
| 追加ツール | SeleniumBasic(VBA ラッパー) |
| ドライバ | msedgedriver.exe(Edge のバージョンに合わせて入手) |
- SeleniumBasic をインストールします(既定先は
C:\SeleniumBasic)。 - Edge のバージョンに一致する msedgedriver.exe をダウンロードし、同フォルダーに配置します。
- VBA エディターで [ツール] → [参照設定] → “Selenium Type Library” を有効にします。
サンプルコード
Option Explicit ' 参照設定: Selenium Type Library が必要です
Sub ScrapeMorinokabuData()
Dim siteURL As String
Dim driver As New Selenium.EdgeDriver
Dim itemList As Selenium.WebElements
Dim element As Selenium.WebElement
Dim rowIndex As Long
siteURL = "https://morinokabu.com/"
' Edge 起動
driver.Start
driver.Get siteURL
' ページ読み込み完了待機
Do While driver.ExecuteScript("return document.readyState") <> "complete"
DoEvents
Loop
' クラス名 "data" を持つ要素群を取得
Set itemList = driver.FindElementsByCss(".data")
rowIndex = 1
For Each element In itemList
' 列 A: 最初の子要素テキスト
Cells(rowIndex, 1).Value = element.FindElementsByCss("*")(0).Text
' 列 B: 3 番目の <p> 要素の HTML
Cells(rowIndex, 2).Value = _
element.FindElementsByTag("p")(2).Attribute("outerHTML")
' 列 C: 最初の <a> 要素の href
Cells(rowIndex, 3).Value = _
element.FindElementsByTag("a")(0).Attribute("href")
rowIndex = rowIndex + 1
Next element
driver.Quit
End Sub
コード解説
| 処理 | 説明 |
|---|---|
driver.ExecuteScript("return document.readyState") | JavaScript で読み込み状態を確認します。"complete" になるまでループします。 |
FindElementsByCss(".data") | CSS セレクターでクラス data を持つ要素群を取得します。 |
FindElementsByCss("*")(0) | 取得した要素の最初の子要素を参照します。 |
Attribute("outerHTML") | 要素自身を含む HTML 文字列を取得します。 |
Attribute("href") | <a> 要素のリンク先を取得します。 |
主な DOM アクセス手段と用途
| メソッド | 取得対象 |
|---|---|
FindElementById("id名") | 一意の ID を持つ要素を取得 |
FindElementsByName("name属性") | 指定 name を持つ要素群を配列取得 |
FindElementsByClass("class名") | 指定クラスを持つ要素群を配列取得 |
FindElementsByTag("tag名") | 指定タグ名を持つ要素群を配列取得 |
取得後は InnerText, Attribute(“outerHTML”), Attribute(“src”) などを組み合わせて情報を抽出できます。
応用アイデア
- 可変待機時間
driver.Wait 10000, "css=.data"で最大 10 秒待機し、要素が現れ次第処理を継続できます。 - スクロールが必要なページ
driver.ExecuteScript "window.scrollTo(0, document.body.scrollHeight);"で最下部まで読み込ませてから要素を検索します。 - 複数ページ巡回
URL を配列化し、ループでdriver.Getを呼び出すと大量ページを順次処理できます。
まとめ
SeleniumBasic と EdgeDriver を併用することで、Excel VBA でも Microsoft Edge の DOM へ直接アクセスし、任意の要素を抽出できます。旧来の IE 自動化コードを移行する際は、FindElement 系メソッドと JavaScript 待機ロジックを組み合わせると安定して動作します。社内レポートやデータ収集の自動化にぜひご活用ください。
副業から独立まで「稼げる」Webスキルを習得する(PR)
ここまで読んでいただきありがとうございます。 最後に宣伝をさせてください。
「副業を始めたいが、何から手をつければいいかわからない」「独学でスキルはついたが、収益化できていない」という悩みを持つ方には、マンツーマン指導のWebスクール**「メイカラ」**が適しています。
このスクールは、単に技術を教えるだけでなく、**「副業として具体的にどう稼ぐか」**という実務直結のノウハウ提供に特化している点が特徴です。
講師陣は、実際に「副業Webライターから1年で独立して月収100万円」を達成したプロや、現役で利益を出し続けているブロガーなど、確かな実績を持つプレイヤーのみで構成されています。そのため、机上の空論ではない、現場で通用する戦術を学ぶことができます。
副業に特化した強み
- 最短ルートの提示: 未経験からでも実績を出せるよう、マンツーマンで指導。
- AI活用の習得: 副業の時間対効果を最大化するための、正しいAI活用スキルも網羅。
- 案件獲得のチャンス: 運営がWebマーケティング会社であるため、実力次第で社内案件の紹介など、仕事に直結する可能性があります。
受講者の多くは、「在宅でできる仕事を探している」「副業を頑張りたい」という20代・30代・40代が中心です。
受講前には、講師による無料説明が行われます。無理な勧誘はなく、自分に合った副業スタイルやプランを相談できるため、まずは話を聞いてみることから始めてみてはいかがでしょうか。
