Excel VBA と SeleniumBasic で Microsoft Edge のフォームを自動入力・送信する方法

目次

概要

Excel VBA から Microsoft Edge を操作し、Web ページ上の検索フォームにキーワードを入力して送信する手順を解説いたします。例ではサイト https://morinokabu.com/ を対象に、フォーム要素の取得・値の設定・送信までの流れを示します。


前提条件

項目内容
OSWindows 10 / 11
ExcelMicrosoft 365 または Excel 2016 以降
追加ツールSeleniumBasic(VBA ラッパー)
ドライバEdgeDriver(msedgedriver.exe
VBA 参照設定“Selenium Type Library” を有効化
  1. SeleniumBasic をインストールします(既定フォルダーは C:\SeleniumBasic)。
  2. お使いの Edge バージョンに対応する msedgedriver.exe をダウンロードし、同フォルダーに配置します。
  3. 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 Errordriver.IsElementPresent() を組み合わせて要素有無を確認

まとめ

SeleniumBasic と EdgeDriver を活用すると、Excel VBA でも Microsoft Edge のフォーム操作を自動化できます。入力ボックスや送信ボタンを取得し、SendKeysClick を組み合わせることで、検索や投稿などの処理を効率化可能です。業務用 Web システムへの一括入力や定期検索の自動化など、活用場面は多岐にわたります。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次