目次
概要
Excel VBA から Microsoft Edge を操作し、Web ページ上の検索フォームにキーワードを入力して送信する手順を解説いたします。例ではサイト https://morinokabu.com/ を対象に、フォーム要素の取得・値の設定・送信までの流れを示します。
前提条件
| 項目 | 内容 |
|---|---|
| OS | Windows 10 / 11 |
| Excel | Microsoft 365 または Excel 2016 以降 |
| 追加ツール | SeleniumBasic(VBA ラッパー) |
| ドライバ | EdgeDriver(msedgedriver.exe) |
| VBA 参照設定 | “Selenium Type Library” を有効化 |
- SeleniumBasic をインストールします(既定フォルダーは
C:\SeleniumBasic)。 - お使いの Edge バージョンに対応する msedgedriver.exe をダウンロードし、同フォルダーに配置します。
- VBA エディターの [ツール] → [参照設定] で “Selenium Type Library” にチェックを入れます。
サンプルコード
Option Explicit ' 参照設定: Selenium Type Library が必要です
Sub SubmitSearchForm()
Dim driver As New Selenium.EdgeDriver
Dim targetURL As String
Dim keywordBox As Selenium.WebElement
Dim submitBtn As Selenium.WebElement
targetURL = "https://morinokabu.com/"
' Edge 起動とページ読み込み
driver.Start
driver.Get targetURL
' DOM 完全読込を待機
Do While driver.ExecuteScript("return document.readyState") <> "complete"
DoEvents
Loop
' フォーム要素の取得
Set keywordBox = driver.FindElementById("searchFormKeyword")
Set submitBtn = driver.FindElementById("searchFormSubmit")
' キーワード入力
keywordBox.Clear
keywordBox.SendKeys "Excel VBA"
' 送信
submitBtn.Click
' 必要に応じて次ページの処理を追加
' 例: 結果ページの読み込み完了確認
Do While driver.ExecuteScript("return document.readyState") <> "complete"
DoEvents
Loop
' 終了
driver.Quit
End Sub
コード解説
| 処理 | 説明 |
|---|---|
FindElementById("searchFormKeyword") | 入力ボックスを取得し、SendKeys でキーワードを入力します。 |
FindElementById("searchFormSubmit") | 送信ボタンを取得し、Click で送信します。 |
driver.ExecuteScript("return document.readyState") | 読み込み状態を "complete" で確認し、画面遷移後も待機します。 |
主な要素取得メソッド
| メソッド例 | 用途・特徴 |
|---|---|
FindElementById("id") | ID が一意の場合に最も高速・確実 |
FindElementsByName("name") | name 属性が共通の複数要素を配列で取得 |
FindElementsByClass("class") | 同一クラスの要素リストを取得 |
FindElementsByCss("cssセレクター") | CSS セレクター指定で柔軟に要素を取得 |
FindElementsByTag("tagname") | 特定のタグ(input, a など)を一括取得 |
応用例
| 目的 | 実装ポイント |
|---|---|
| 複数ページへの連続投稿 | URL を配列管理し、For Each でループ処理 |
| 入力値の動的取得 | セル値や UserForm 入力を SendKeys に渡す |
| 送信後の結果解析 | XPath や CSS セレクターで結果要素を取得し、Excel シートに書き出す |
| エラーハンドリング | On Error と driver.IsElementPresent() を組み合わせて要素有無を確認 |
まとめ
SeleniumBasic と EdgeDriver を活用すると、Excel VBA でも Microsoft Edge のフォーム操作を自動化できます。入力ボックスや送信ボタンを取得し、SendKeys と Click を組み合わせることで、検索や投稿などの処理を効率化可能です。業務用 Web システムへの一括入力や定期検索の自動化など、活用場面は多岐にわたります。
技術書の購入コストを抑えてスキルアップするなら

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