Excel上級者

ExcelからWebフォームに自動入力する方法3選【IE廃止後対応】

しんたろ。

ExcelのデータをWebフォームに自動入力したい…でもIEが使えなくなって困っていませんか?この記事ではIE廃止後でも使える3つの方法を比較しながら解説します。

この記事でわかること
  • IE廃止後にExcelからWebフォームへ自動入力する3つの方法
  • VBA + SeleniumBasicの環境構築から実装までの手順
  • Power Automate Desktopを使ったノーコードの自動入力フロー
  • TinySeleniumVBAによるインストール不要の軽量な方法
  • スキルレベルや用途に応じた最適な手法の選び方
  • よくあるエラーの原因と対処法

ExcelのデータをWebフォームに手作業で入力するのは、件数が多くなるほど時間がかかり、ミスも起きやすくなります。しかし、2022年6月にInternet Explorer(IE)のサポートが終了したことで、以前のVBAコード(InternetExplorerオブジェクトを使った方法)は動作しなくなりました。

この記事では、IE廃止後の環境でも確実に動く3つの自動入力方法を、環境構築からサンプルコードまで初心者にもわかりやすく解説します。自分のスキルレベルや業務に合った方法を選んで、面倒なフォーム入力作業を自動化しましょう。

この記事を読むとできること
この記事で解説するVBAコードを実行すると、以下のような結果が得られます
‘ Webフォームにデータを自動入力するマクロ
Sub フォーム自動入力()
    Dim ws As Worksheet
    Set ws = ActiveSheet
    Dim i As Long
    For i = 2 To 4
        ‘ IEオブジェクトでフォーム要素を取得
        ‘ InputName.Value = ws.Cells(i, “B”).Value
    Next i
    MsgBox “3件のフォーム入力が完了しました”
End Sub
下のデモで実行結果を確認できます
📊 顧客データ.xlsx – Excel
📄 Excelデータ(送信元)
AB
1 項目
2 氏名田中太郎
3 メールtanaka@example.com
4 電話03-1234-5678
🌐 Webフォーム(入力先)
お問い合わせフォーム
田中太郎
tanaka@example.com
03-1234-5678
送信
準備完了 100%
3件のデータがWebフォームに自動入力されました!
☝ VBAからIE/Edgeを制御してフォーム入力を自動化できます
この記事の目次
  1. ExcelでWebフォームを自動入力する方法とは?【全体像】
  2. 【方法1】VBA + Seleniumで自動入力する手順
  3. 【方法2】Power Automate Desktopで自動入力する手順
  4. 【方法3】TinySeleniumVBAで自動入力する手順
  5. 3つの方法の比較|どれを選ぶべき?
  6. 実務で使えるユースケース3選
  7. よくあるエラーと対処法
  8. フォーム自動入力の動作をデモで確認
  9. よくある質問(FAQ)
  10. まとめ
  11. LINEでExcelを気軽に学べる

ExcelでWebフォームを自動入力する方法とは?【全体像】

Webフォーム自動入力でできること

ExcelからWebフォームへの自動入力を実装すると、次のような作業を自動化できます。

  • Excelの顧客リストをWebシステムに一括登録する
  • 経費精算フォームにExcelの明細データを転記する
  • アンケートや申請フォームにExcelのデータを順番に入力する
  • 社内システムへのデータ登録を自動化する

手動で1件ずつコピー&ペーストしていた作業が、ボタン1つで完了するようになります。100件のデータ入力が手動で2時間かかるとすれば、自動化により数分で完了します。

3つの実装方法の比較一覧

IE廃止後の現在、ExcelからWebフォームに自動入力する主な方法は以下の3つです。

Web自動入力3方式(VBA+Selenium・PAD・TinySeleniumVBA)の比較
3つの実装方法の比較
項目VBA + SeleniumBasicPower Automate DesktopTinySeleniumVBA
難易度中級初級初級〜中級
コスト無料無料(Windows 10/11標準搭載)無料
プログラミングVBAコードを書く不要(ノーコード)VBAコードを書く
必要な環境SeleniumBasicインストール + ChromeDriverWindows 10/11 + Power Automate DesktopVBAモジュールのインポートのみ
対応ブラウザChrome / Edge / FirefoxChrome / Edge / FirefoxChrome / Edge
向いている人VBA経験者・柔軟な制御をしたい人プログラミング未経験者・手軽に始めたい人VBA経験者・環境構築を最小限にしたい人
処理速度高速中速高速

IE廃止後に知っておくべきこと

以前は、VBAからCreateObject("InternetExplorer.Application")でIEを起動し、getElementByIdなどでフォーム要素を操作する方法が主流でした。しかし、2022年6月にIEのサポートが完全終了したため、この方法はもう使えません。

IE廃止後の重要ポイント
  • CreateObject("InternetExplorer.Application")は動作しません
  • InternetExplorerオブジェクトを使った既存マクロはすべて修正が必要です
  • 代替手段としてSelenium経由のブラウザ操作またはPower Automate Desktopが標準的です
  • Chrome・Edgeなどのモダンブラウザを操作する方法に移行しましょう

それでは、3つの方法をそれぞれ具体的な手順とともに解説していきます。

【方法1】VBA + Seleniumで自動入力する手順

1つ目の方法は、VBAにSeleniumBasicというライブラリを組み合わせてChromeやEdgeを操作する方法です。IE時代のVBAコードに最も近い考え方で移行でき、細かい制御やエラーハンドリングも柔軟に行えます。

Selenium導入に必要な環境準備

VBA + Seleniumでの自動入力を始めるには、以下の3つが必要です。

  • Microsoft Excel(2016以降を推奨)
  • SeleniumBasic(VBAからブラウザを操作するためのライブラリ)
  • ChromeDriver(使用するChromeのバージョンに対応したもの)

ChromeDriverのバージョンは、お使いのGoogle Chromeのバージョンと一致している必要があります。Chromeのバージョンは、アドレスバーにchrome://versionと入力すると確認できます。

SeleniumBasicのインストールとChromeDriver設定

以下の手順でSeleniumBasicをインストールします。

  • 手順1: GitHubのSeleniumBasicリリースページからインストーラー(SeleniumBasic-x.x.x.exe)をダウンロードする
  • 手順2: インストーラーを実行し、デフォルト設定でインストールする
  • 手順3: ChromeDriverをダウンロードする(Chrome for Testing公式サイトから、Chromeのバージョンに合ったものを選択)
  • 手順4: ダウンロードしたchromedriver.exeを、SeleniumBasicのインストールフォルダに配置する(通常はC:\Users\ユーザー名\AppData\Local\SeleniumBasic\

ChromeDriverの配置場所を間違えると「ドライバーが見つからない」エラーになります。SeleniumBasicのインストールフォルダに直接置くのがポイントです。

VBAの参照設定(Selenium Type Library)

SeleniumBasicをVBAから使うには、参照設定を追加する必要があります。

  • 手順1: Excelを開き、Alt + F11でVBAエディタを起動する
  • 手順2: メニューの「ツール」→「参照設定」を開く
  • 手順3: 一覧からSelenium Type Libraryにチェックを入れてOKを押す

参照設定の一覧にSelenium Type Libraryが表示されない場合は、SeleniumBasicのインストールが正しく完了していない可能性があります。再インストールを試してください。

フォーム自動入力のVBAコード(コピペOK)

以下は、Excelシートのデータを読み取り、Webフォームに自動入力する基本的なVBAコードです。

Sub WebフォームにSeleniumで自動入力()
    '--- SeleniumBasicを使ったWebフォーム自動入力 ---
    Dim driver As New Selenium.ChromeDriver
    Dim ws As Worksheet
    Dim lastRow As Long
    Dim i As Long

    Set ws = ThisWorkbook.Sheets("入力データ")
    lastRow = ws.Cells(Rows.Count, 1).End(xlUp).Row

    '--- Chromeブラウザを起動してフォームページを開く ---
    driver.Start
    driver.Get "https://example.com/form"

    '--- Excelの各行データをフォームに入力 ---
    For i = 2 To lastRow
        '--- 名前フィールドに入力 ---
        driver.FindElementById("name").Clear
        driver.FindElementById("name").SendKeys ws.Cells(i, 1).Value

        '--- メールアドレスフィールドに入力 ---
        driver.FindElementById("email").Clear
        driver.FindElementById("email").SendKeys ws.Cells(i, 2).Value

        '--- 電話番号フィールドに入力 ---
        driver.FindElementById("phone").Clear
        driver.FindElementById("phone").SendKeys ws.Cells(i, 3).Value

        '--- 送信ボタンをクリック ---
        driver.FindElementById("submit-btn").Click

        '--- ページ遷移を待機(秒数は環境に応じて調整) ---
        driver.Wait 2000

        '--- フォームページに戻る(次のデータ入力のため) ---
        driver.Get "https://example.com/form"
        driver.Wait 1000
    Next i

    MsgBox "全データの入力が完了しました(" & lastRow - 1 & "件)"

    '--- ブラウザを閉じる ---
    driver.Quit
    Set driver = Nothing
End Sub
コードのポイント
  • FindElementByIdはHTML要素のid属性で要素を特定します
  • Clearで既存の入力値をクリアしてからSendKeysで新しい値を入力します
  • driver.Waitでページの読み込みを待機します(ミリ秒単位)
  • 実際のフォームに合わせてid属性やURLを変更してください

フォームの要素を特定する方法はFindElementById以外にもあります。以下のメソッドを状況に応じて使い分けてください。

メソッド特定方法使用例
FindElementByIdid属性id=”name” の要素を取得
FindElementByNamename属性name=”email” の要素を取得
FindElementByCssCSSセレクタinput[type=”text”] の要素を取得
FindElementByXPathXPath複雑な階層構造の要素を取得
FindElementByClassclass属性class=”form-input” の要素を取得

送信ボタンの自動クリックまで実装する

フォームへの入力だけでなく、送信ボタンのクリックやドロップダウンの選択なども自動化できます。以下はより実務的なコード例です。

Sub フォーム送信まで自動化()
    Dim driver As New Selenium.ChromeDriver
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("入力データ")

    driver.Start
    driver.Get "https://example.com/form"
    driver.Wait 2000

    '--- テキスト入力 ---
    driver.FindElementById("company").SendKeys ws.Cells(2, 1).Value
    driver.FindElementById("name").SendKeys ws.Cells(2, 2).Value
    driver.FindElementById("email").SendKeys ws.Cells(2, 3).Value

    '--- ドロップダウンの選択 ---
    Dim selectElement As Selenium.WebElement
    Set selectElement = driver.FindElementById("category")
    selectElement.AsSelect.SelectByText ws.Cells(2, 4).Value

    '--- チェックボックスをクリック ---
    Dim chk As Selenium.WebElement
    Set chk = driver.FindElementById("agree")
    If Not chk.IsSelected Then
        chk.Click
    End If

    '--- 送信ボタンをクリック ---
    driver.FindElementById("submit-btn").Click

    '--- 送信完了を待機 ---
    driver.Wait 3000

    MsgBox "フォームの送信が完了しました"

    driver.Quit
    Set driver = Nothing
End Sub

ドロップダウンはAsSelect.SelectByTextで表示テキストを指定して選択できます。チェックボックスはIsSelectedで現在の状態を確認してからClickでトグルします。

VBAでPDF印刷を自動化!3つの方法と実務コード集
VBAでPDF印刷を自動化!3つの方法と実務コード集

【方法2】Power Automate Desktopで自動入力する手順

2つ目の方法は、MicrosoftのPower Automate Desktop(PAD)を使う方法です。プログラミング不要のノーコードツールで、ドラッグ&ドロップの操作だけでExcelからWebフォームへの自動入力フローを作成できます。

Power Automate Desktopとは?(無料で使えるRPAツール)

Power Automate Desktopは、Microsoftが提供するデスクトップ向けRPA(ロボティック・プロセス・オートメーション)ツールです。

項目内容
費用Windows 10/11ユーザーは無料
プログラミング不要(ノーコード / ローコード)
対応ブラウザChrome / Edge / Firefox
操作方法アクションをドラッグ&ドロップで組み合わせる
Excel連携Excelファイルの読み書きアクションが標準搭載

VBAのコードを書く必要がないため、プログラミング未経験の方にも取り組みやすい方法です。

Power Automate DesktopはWindows 10/11に標準搭載されているので、追加のインストールなしですぐに始められます。スタートメニューから「Power Automate」で検索してみてください。

Excelデータの読み込みフロー作成

まず、Excelファイルからデータを読み込むフローを作成します。以下の手順で進めてください。

  • 手順1: Power Automate Desktopを起動し、「新しいフロー」をクリックする
  • 手順2: フロー名を入力する(例: 「Webフォーム自動入力」)
  • 手順3: 左側のアクション一覧から「Excel」→「Excelの起動」をドラッグして配置する
  • 手順4: 「Excelの起動」アクションの設定で、対象のExcelファイルパスを指定する
  • 手順5: 「Excel」→「Excelワークシートから読み取り」アクションを追加する
  • 手順6: 読み取り範囲を「セル範囲の値」に設定し、先頭行・最終行のセルを指定する

これでExcelのデータがPower Automate Desktopの変数(DataTable)に格納されます。

Webフォームへの自動入力フロー作成

次に、読み込んだデータをWebフォームに入力するフローを追加します。

  • 手順1: 「ブラウザー自動化」→「新しいChromeを起動する」アクションを追加する
  • 手順2: 初期URLにWebフォームのURLを入力する
  • 手順3: 「ブラウザー自動化」→「Webページ内のテキストフィールドに入力する」アクションを追加する
  • 手順4: UI要素として入力先のフォーム欄を指定する(UI要素の追加ボタンから画面上のフォームをクリックして選択)
  • 手順5: 入力値にExcelから読み取ったDataTableの変数を指定する(例: %ExcelData[0][0]%
  • 手順6: 同様に、他のフォーム欄(メール、電話番号など)にも入力アクションを追加する
  • 手順7: 「ブラウザー自動化」→「Webページのボタンを押します」アクションで送信ボタンをクリックする

ループ処理で複数行データを一括入力する

1件だけでなく、Excelの複数行データを連続して入力するにはループ処理を追加します。

  • 手順1: 「ループ」→「For each」アクションを、Webフォーム入力アクションの前に配置する
  • 手順2: 反復処理の対象に、Excelから読み取ったDataTable変数を指定する
  • 手順3: ループ内のフォーム入力アクションで、変数を%CurrentItem[0]%(1列目)、%CurrentItem[1]%(2列目)のように変更する
  • 手順4: 送信ボタンクリック後に「待機」アクション(2〜3秒)を追加する
  • 手順5: ループの末尾で「Webページに移動」アクションを追加し、フォームページに戻る

これで、Excelの全行データが順番にWebフォームに自動入力されます。フローが完成したら、上部の実行ボタンを押して動作確認してください。

【Excel】オートフィルの使い方|連番・日付の自動入力からフラッシュフィルまで完全ガイド
【Excel】オートフィルの使い方|連番・日付の自動入力からフラッシュフィルまで完全ガイド

【方法3】TinySeleniumVBAで自動入力する手順

3つ目の方法は、TinySeleniumVBAという軽量ライブラリを使う方法です。SeleniumBasicのようなインストール作業が不要で、VBAモジュールをインポートするだけで使い始められるのが最大の特長です。

TinySeleniumVBAとは(インストール不要の軽量ライブラリ)

TinySeleniumVBAは、VBAからChrome・Edgeを操作するための軽量なオープンソースライブラリです。

項目SeleniumBasicTinySeleniumVBA
導入方法インストーラーを実行VBAモジュールをインポートするだけ
管理者権限必要不要
参照設定Selenium Type Libraryを追加不要
配布しやすさ全PCにインストールが必要Excelファイルに同梱可能
機能の豊富さ多い基本機能に絞っている

社内でマクロを共有する場合、SeleniumBasicは各PCにインストールが必要ですが、TinySeleniumVBAならExcelファイルをコピーするだけで配布できます。管理者権限が不要な点も、企業環境では大きなメリットです。

導入手順(VBAモジュールのインポートのみ)

  • 手順1: GitHubのTinySeleniumVBAリポジトリから最新版をダウンロードする
  • 手順2: ダウンロードしたZIPを解凍し、中のclsファイルとbasファイルを確認する
  • 手順3: ExcelのVBAエディタ(Alt + F11)を開く
  • 手順4: プロジェクトエクスプローラーで右クリック →「ファイルのインポート」を選択する
  • 手順5: 解凍フォルダ内のすべてのclsファイルとbasファイルをインポートする
  • 手順6: ChromeDriverをダウンロードし、Excelファイルと同じフォルダに配置する

以上で準備完了です。参照設定の追加は不要で、インポートしたモジュール内のクラスをそのまま使えます。

実装コードと動作確認

TinySeleniumVBAを使ったWebフォーム自動入力のコード例です。

Sub TinySeleniumVBAでフォーム入力()
    '--- TinySeleniumVBAを使ったWebフォーム自動入力 ---
    Dim driver As New WebDriver
    Dim ws As Worksheet
    Dim lastRow As Long
    Dim i As Long

    Set ws = ThisWorkbook.Sheets("入力データ")
    lastRow = ws.Cells(Rows.Count, 1).End(xlUp).Row

    '--- ChromeDriverのパスを指定して起動 ---
    driver.Chrome ThisWorkbook.Path & "\chromedriver.exe"

    '--- フォームページを開く ---
    driver.Navigate "https://example.com/form"
    driver.Wait 2000

    For i = 2 To lastRow
        '--- CSSセレクタで要素を特定して入力 ---
        driver.FindElementByCSSSelector("#name").Clear
        driver.FindElementByCSSSelector("#name").SendKeys ws.Cells(i, 1).Value

        driver.FindElementByCSSSelector("#email").Clear
        driver.FindElementByCSSSelector("#email").SendKeys ws.Cells(i, 2).Value

        driver.FindElementByCSSSelector("#phone").Clear
        driver.FindElementByCSSSelector("#phone").SendKeys ws.Cells(i, 3).Value

        '--- 送信ボタンをクリック ---
        driver.FindElementByCSSSelector("#submit-btn").Click
        driver.Wait 2000

        '--- フォームページに戻る ---
        driver.Navigate "https://example.com/form"
        driver.Wait 1000
    Next i

    MsgBox "全データの入力が完了しました(" & lastRow - 1 & "件)"

    driver.Quit
End Sub

TinySeleniumVBAでは、要素の特定にCSSセレクタを使います。#nameはid属性が「name」の要素、.form-inputはclass属性が「form-input」の要素を表します。SeleniumBasicと基本的な考え方は同じですが、メソッド名が若干異なるので注意してください。

エラーハンドリングを追加したより実践的なコードは以下のとおりです。

Sub TinySeleniumVBA_エラーハンドリング付き()
    Dim driver As New WebDriver
    Dim ws As Worksheet
    Dim lastRow As Long
    Dim i As Long
    Dim successCount As Long
    Dim errorCount As Long

    Set ws = ThisWorkbook.Sheets("入力データ")
    lastRow = ws.Cells(Rows.Count, 1).End(xlUp).Row
    successCount = 0
    errorCount = 0

    driver.Chrome ThisWorkbook.Path & "\chromedriver.exe"

    For i = 2 To lastRow
        On Error GoTo ErrorHandler

        driver.Navigate "https://example.com/form"
        driver.Wait 2000

        driver.FindElementByCSSSelector("#name").Clear
        driver.FindElementByCSSSelector("#name").SendKeys ws.Cells(i, 1).Value

        driver.FindElementByCSSSelector("#email").Clear
        driver.FindElementByCSSSelector("#email").SendKeys ws.Cells(i, 2).Value

        driver.FindElementByCSSSelector("#submit-btn").Click
        driver.Wait 2000

        '--- 成功した行に「済」マークを記入 ---
        ws.Cells(i, 5).Value = "済"
        successCount = successCount + 1
        GoTo NextRow

ErrorHandler:
        '--- エラーが発生した行にエラー内容を記録 ---
        ws.Cells(i, 5).Value = "エラー: " & Err.Description
        errorCount = errorCount + 1
        Resume NextRow

NextRow:
    Next i

    On Error GoTo 0

    MsgBox "処理完了" & vbCrLf & _
           "成功: " & successCount & "件" & vbCrLf & _
           "エラー: " & errorCount & "件"

    driver.Quit
End Sub

エラーが発生しても処理を止めずに次の行に進み、最後にまとめて結果を確認できるようにしておくと、大量データの入力時に便利です。

VBAで今日の日付を取得する方法|Date関数・Now関数・Format変換を完全解説
VBAで今日の日付を取得する方法|Date関数・Now関数・Format変換を完全解説

3つの方法の比較|どれを選ぶべき?

ここまで3つの方法を紹介してきました。それぞれの特徴をさらに詳しく比較し、あなたに最適な方法を選ぶためのポイントを解説します。

スキルレベルおすすめ手法理由
プログラミング未経験Power Automate Desktopノーコードで直感的に操作でき、学習コストが最も低い
VBA初心者TinySeleniumVBA環境構築が簡単で、短いコードで実装できる
VBA中級者以上VBA + SeleniumBasic柔軟な制御と豊富な機能で複雑な処理にも対応できる
チーム共有が必要TinySeleniumVBAインストール不要でExcelファイルごと配布できる
大量データを扱うVBA + SeleniumBasicループ処理の高速化やエラーハンドリングが柔軟

処理速度・安定性の比較

比較項目VBA + SeleniumBasicPower Automate DesktopTinySeleniumVBA
処理速度高速(直接API通信)中速(UI操作ベース)高速(直接API通信)
安定性高い(明示的な待機制御可能)高い(自動リトライ機能あり)高い(WebDriver Protocol準拠)
100件処理の目安約5〜10分約10〜20分約5〜10分
並列処理可能(複数ドライバー起動)不可(単一フロー実行)可能(複数ドライバー起動)

処理速度を重視する場合はVBA系(SeleniumBasicまたはTinySeleniumVBA)が適しています。Power Automate DesktopはUI操作をエミュレートする仕組みのため、VBA系と比べると若干遅くなりますが、安定性は十分です。

メンテナンス性とアップデート対応

比較項目VBA + SeleniumBasicPower Automate DesktopTinySeleniumVBA
Chromeアップデート時ChromeDriverの更新が必要自動対応(ブラウザ拡張機能経由)ChromeDriverの更新が必要
コードの修正しやすさVBAエディタで直接編集GUIフローの編集(直感的)VBAエディタで直接編集
バージョン管理コードをテキストで管理可能フローのエクスポート/インポートコードをテキストで管理可能
他PCへの展開各PCにSeleniumBasicのインストールが必要各PCにPADのセットアップが必要Excelファイルのコピーのみ

長期的なメンテナンス性では、ChromeDriverの更新が不要なPower Automate Desktopに優位性があります。一方、チーム展開のしやすさではTinySeleniumVBAが最も手軽です。

【VBA入門】SubとFunctionの違い|戻り値・呼び出し方法を徹底解説
【VBA入門】SubとFunctionの違い|戻り値・呼び出し方法を徹底解説

実務で使えるユースケース3選

ExcelからWebフォームへの自動入力は、さまざまな業務で活用できます。ここでは代表的な3つのユースケースを紹介します。

顧客データの一括登録

Excelで管理している顧客リスト(氏名・住所・電話番号・メールアドレスなど)を、CRMやWebシステムの登録フォームに一括で入力するケースです。

新規顧客の登録や、システム移行時のデータ投入で活躍します。100件程度の顧客データであれば、VBA + Seleniumで10分程度で完了できます。手動入力では数時間かかる作業を大幅に短縮できるうえ、入力ミスも防げます。

Sub 顧客データ一括登録()
    Dim driver As New Selenium.ChromeDriver
    Dim ws As Worksheet
    Dim lastRow As Long
    Dim i As Long

    Set ws = ThisWorkbook.Sheets("顧客リスト")
    lastRow = ws.Cells(Rows.Count, 1).End(xlUp).Row

    driver.Start

    For i = 2 To lastRow
        driver.Get "https://example.com/crm/register"
        driver.Wait 1500

        driver.FindElementById("last-name").SendKeys ws.Cells(i, 1).Value
        driver.FindElementById("first-name").SendKeys ws.Cells(i, 2).Value
        driver.FindElementById("email").SendKeys ws.Cells(i, 3).Value
        driver.FindElementById("phone").SendKeys ws.Cells(i, 4).Value
        driver.FindElementById("address").SendKeys ws.Cells(i, 5).Value

        driver.FindElementById("register-btn").Click
        driver.Wait 2000

        ws.Cells(i, 7).Value = "登録済"
    Next i

    driver.Quit
    MsgBox lastRow - 1 & "件の顧客データを登録しました"
End Sub

経費精算フォームの自動入力

Excelで作成した経費明細を、社内の経費精算Webシステムに転記するケースです。日付・金額・勘定科目・摘要などの項目を、1件ずつフォームに入力して送信します。

毎月の経費精算で10〜50件の明細を手入力している場合、自動化することで大幅な時間短縮になります。Power Automate Desktopを使えば、プログラミング不要で同様の自動化が可能です。

アンケート・申請フォームの自動処理

Excelに集約したアンケート回答や申請データを、Google FormsやMicrosoft Formsなどに一括投入するケースです。テスト目的でダミーデータを大量に登録したい場合にも活用できます。

ただし、自動入力を行う際はフォーム提供元の利用規約を確認してください。自動送信を禁止しているサービスもあるため、業務利用では社内システムやテスト環境での使用を推奨します。

【2026年版】Excelでよく使う関数一覧|初心者が最初に覚えるべき関数を完全ガイド
【2026年版】Excelでよく使う関数一覧|初心者が最初に覚えるべき関数を完全ガイド

よくあるエラーと対処法

Webフォームの自動入力で遭遇しやすいエラーと、その対処法をまとめました。

ChromeDriverのバージョン不一致エラー

エラー内容: 「session not created: This version of ChromeDriver only supports Chrome version XX」というメッセージが表示される。

原因: お使いのGoogle ChromeのバージョンとChromeDriverのバージョンが一致していない場合に発生します。Chromeは自動でアップデートされるため、気付かないうちにバージョンがズレることがあります。

対処法:

  • Chromeのアドレスバーにchrome://versionと入力し、現在のバージョンを確認する
  • Chrome for Testingの公式サイトから、同じメジャーバージョンのChromeDriverをダウンロードする
  • ダウンロードしたchromedriver.exeを、既存のファイルと置き換える
'--- ChromeDriverの自動更新チェック用コード ---
Sub Chromeバージョンをチェック()
    Dim driver As New Selenium.ChromeDriver

    On Error GoTo VersionError
    driver.Start
    MsgBox "ChromeDriverは正常に動作しています"
    driver.Quit
    Exit Sub

VersionError:
    MsgBox "ChromeDriverのバージョンエラーです。" & vbCrLf & _
           "Chromeのバージョンを確認し、対応するChromeDriverをダウンロードしてください。" & vbCrLf & _
           "エラー内容: " & Err.Description
End Sub

要素が見つからない(NoSuchElement)エラー

エラー内容: 「NoSuchElementError」や「要素が見つかりません」というメッセージが表示される。

原因: 指定したid・name・CSSセレクタに該当する要素がページ上に存在しない場合に発生します。主な原因は以下のとおりです。

  • ページがまだ完全に読み込まれていない
  • id属性やname属性のスペルミス
  • フォームがiframe内に配置されている
  • JavaScriptで動的に生成される要素で、まだDOMに追加されていない

対処法:

'--- 要素が見つからない場合の待機処理 ---
Sub 要素の待機処理サンプル()
    Dim driver As New Selenium.ChromeDriver
    Dim elm As Selenium.WebElement
    Dim retryCount As Long

    driver.Start
    driver.Get "https://example.com/form"

    '--- 最大10秒間、要素が見つかるまでリトライ ---
    retryCount = 0
    Do
        On Error Resume Next
        Set elm = driver.FindElementById("name")
        On Error GoTo 0

        If Not elm Is Nothing Then Exit Do

        driver.Wait 1000  '--- 1秒待機してリトライ ---
        retryCount = retryCount + 1
    Loop Until retryCount >= 10

    If elm Is Nothing Then
        MsgBox "要素が見つかりませんでした。ページのHTMLを確認してください。"
    Else
        elm.SendKeys "テストデータ"
    End If

    driver.Quit
End Sub

ChromeのF12キーでデベロッパーツールを開き、要素のid属性やname属性を確認するのが一番確実です。右クリック→「検証」でも同様の操作ができます。

ページ読み込み待機のタイムアウト

エラー内容: 「TimeoutException」や「ページの読み込みがタイムアウトしました」というメッセージが表示される。

原因: ネットワークの遅延やサーバーの応答が遅い場合に、ページの読み込み完了を待ちきれずにタイムアウトします。

対処法:

  • driver.Waitの待機時間を長めに設定する(2000ミリ秒→5000ミリ秒など)
  • SeleniumBasicの場合、driver.Timeouts.ImplicitWait = 10000で暗黙的な待機時間を設定する
  • ページ内の特定の要素が表示されるまで待機する明示的待機を実装する
  • ネットワーク環境を確認し、安定した接続で実行する
'--- タイムアウト対策: 暗黙的待機の設定 ---
Sub タイムアウト対策サンプル()
    Dim driver As New Selenium.ChromeDriver

    driver.Start

    '--- ページ読み込みの最大待機時間を30秒に設定 ---
    driver.Timeouts.PageLoad = 30000

    '--- 要素検索の暗黙的待機を10秒に設定 ---
    driver.Timeouts.ImplicitWait = 10000

    driver.Get "https://example.com/form"

    '--- 以降の処理でタイムアウトしにくくなる ---
    driver.FindElementById("name").SendKeys "テスト"

    driver.Quit
End Sub

フォーム自動入力の動作をデモで確認

VBAからWebフォームにデータを自動入力する流れを、下のインタラクティブデモで確認できます。

VBAマクロの実行結果は記事冒頭のインタラクティブデモで確認できます。ボタンを押すとアニメーションで動作をシミュレーションします。

よくある質問(FAQ)

ExcelのVBAでWebフォームに自動入力するにはどうすればいいですか?

VBAにSeleniumBasicライブラリを組み合わせ、ChromeやEdgeを操作してフォーム要素にアクセスし値を入力します。InternetExplorerオブジェクトを使う旧来の方法はIE廃止により使用できなくなったため、Selenium経由でのブラウザ操作が現在の標準的な方法です。本記事のVBA + Seleniumのセクションで、環境構築からサンプルコードまで詳しく解説しています。

プログラミングの知識がなくてもWebフォームの自動入力はできますか?

はい、Power Automate Desktopを使えばノーコードでExcelからWebフォームへの自動転記が可能です。Windows 10/11に無料で搭載されており、ドラッグ&ドロップの操作でフローを作成できます。VBAのコードを一切書かずに自動入力を実現できるので、プログラミング未経験の方にもおすすめです。

IE(Internet Explorer)のサポート終了後、VBAでのブラウザ操作はどうすればよいですか?

IE廃止後の代替手段として、(1) SeleniumBasicを使ってChrome/Edgeを操作する方法、(2) TinySeleniumVBAなどの軽量ライブラリを使う方法、(3) Power Automate Desktopを使うノーコード方法の3つがあります。いずれもIEの代わりにモダンブラウザ(Chrome・Edge)を操作する仕組みです。VBAの既存コードからの移行であれば、SeleniumBasicが最も近い書き方で対応できます。

SeleniumBasicとTinySeleniumVBAの違いは何ですか?

SeleniumBasicは従来から使われているライブラリで、インストーラーの実行と参照設定の追加が必要です。機能が豊富で、複雑なブラウザ操作にも対応できます。TinySeleniumVBAはインストール不要の軽量版で、VBAモジュールをインポートするだけで使えるため導入が最も簡単です。社内で複数のPCに配布する場合は、TinySeleniumVBAの方が手軽に展開できます。

大量のデータをWebフォームに自動入力する場合、どの方法が最適ですか?

大量データの一括入力にはVBA + Seleniumが最適です。ループ処理による高速な連続入力が可能で、エラーハンドリングも柔軟にカスタマイズできます。処理の途中でエラーが発生しても、該当行をスキップして次の行に進む制御が書けるため、100件以上のデータでも安心して実行できます。少量データや定型業務にはPower Automate Desktopの方がメンテナンスしやすいです。

💻 操作を体験してみよう!

実際の操作手順をクリックして体験できます。各ステップをクリックしてみましょう。

1 Excelデータ
2 VBAコード
3 自動入力結果
📚 顧客データ.xlsx
ABCD
1 氏名メール電話会社名
2 田中 太郎 tanaka@example.com 03-1234-5678 ABC株式会社
3 佐藤 花子 sato@example.com 06-9876-5432 XYZ商事
4 鈴木 一郎 suzuki@example.com 045-111-2222 DEF工業
💻 VBE – Module1 (コード)
‘ SeleniumでWebフォーム自動入力
Sub AutoFillForm()
  Dim driver As New ChromeDriver
  driver.Get “https://form.example.com”

  Dim i As Long
  For i = 2 To 4
    driver.FindElementById(“name”).SendKeys Cells(i,1)
    driver.FindElementById(“email”).SendKeys Cells(i,2)
    driver.FindElementById(“phone”).SendKeys Cells(i,3)
    driver.FindElementById(“submit”).Click
  Next i
End Sub
F5で実行 / 実行ボタンをクリック
https://form.example.com
顧客登録フォーム
氏名 田中 太郎
メール tanaka@example.com
電話 03-1234-5678
会社名 ABC株式会社
送信完了
✅ 3件のデータが正常に送信されました
1 Excelにフォーム入力用データを準備
2 VBEでSeleniumを使った自動入力コードを作成
3 実行するとブラウザが自動でフォームに入力・送信

まとめ

ExcelからWebフォームに自動入力する方法を3つ紹介しました。IE廃止後の現在でも、適切なツールを選べば自動入力は問題なく実現できます。

方法こんな人におすすめ
VBA + SeleniumBasicVBA経験者で、柔軟な制御や大量データ処理が必要な人
Power Automate Desktopプログラミング未経験で、手軽に自動化を始めたい人
TinySeleniumVBA環境構築を最小限にしたい人、チームへの配布が必要な人

まずは自分のスキルレベルと業務の要件に合った方法を1つ選び、簡単なフォームで試してみることをおすすめします。小さく始めて動作を確認できたら、実際の業務フォームに応用していきましょう。

IE時代のコードを使い続けている方は、この機会にぜひ最新の方法に移行してください。一度環境を整えれば、日々のフォーム入力作業を大幅に効率化できます。

GASならブラウザだけでフォーム処理 — GAS入門完全ガイドへ →

【Excel】オートフィルの使い方|連番・日付の自動入力からフラッシュフィルまで完全ガイド
【Excel】オートフィルの使い方|連番・日付の自動入力からフラッシュフィルまで完全ガイド
【2026年版】Excelでよく使う関数一覧|初心者が最初に覚えるべき関数を完全ガイド
【2026年版】Excelでよく使う関数一覧|初心者が最初に覚えるべき関数を完全ガイド
Excel業務の自動化
その手作業、自動化しませんか?

VBA開発・GAS連携・Webアプリ化まで、
業務に合わせた最適な自動化をご提案します。

1,600部ツール販売実績
15年製造業の業務経験
無料で相談する →
初回相談無料・お見積りだけでもOK
期間限定でChatGPT✖︎Googleスプレットシートのコンテンツ配布中!

LINEでExcelを気軽に学べる

しんたろ。
しんたろ。
Excel歴10年以上 → アプリ開発者
Profile
大手メーカーに15年以上勤務。製造部門で海外拠点の立ち上げ支援や、現場責任者として採算管理・納期管理・設備オペレートを経験。 2023年にDX人材育成プログラム第1期生として活動後、現在は製造現場のスケジュール運用を支えるアプリの企画・開発をメインに活動中。工程表示表作成の内製化SaaSを構築し、年間1,300万円のコスト改善を実現。 Excelによる業務改善で年間240時間の残業削減を達成した経験を活かし、ブログやSNSでも情報発信しています。
プロフィールを読む

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

ABOUT ME
しんたろ。
しんたろ。
Excel歴10年以上 → アプリ開発者
大手メーカーに15年以上勤務。製造部門で海外拠点の立ち上げ支援や、現場責任者として採算管理・納期管理・設備オペレートを経験。 2023年にDX人材育成プログラム第1期生として活動後、現在は製造現場のスケジュール運用を支えるアプリの企画・開発をメインに活動中。工程表示表作成の内製化SaaSを構築し、年間1,300万円のコスト改善を実現。 Excelによる業務改善で年間240時間の残業削減を達成した経験を活かし、ブログやSNSでも情報発信しています。
記事URLをコピーしました