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つの自動入力方法を、環境構築からサンプルコードまで初心者にもわかりやすく解説します。自分のスキルレベルや業務に合った方法を選んで、面倒なフォーム入力作業を自動化しましょう。
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
| A | B | |
|---|---|---|
| 1 | 項目 | 値 |
| 2 | 氏名 | 田中太郎 |
| 3 | メール | tanaka@example.com |
| 4 | 電話 | 03-1234-5678 |
☝ VBAからIE/Edgeを制御してフォーム入力を自動化できます
ExcelでWebフォームを自動入力する方法とは?【全体像】
Webフォーム自動入力でできること
ExcelからWebフォームへの自動入力を実装すると、次のような作業を自動化できます。
- Excelの顧客リストをWebシステムに一括登録する
- 経費精算フォームにExcelの明細データを転記する
- アンケートや申請フォームにExcelのデータを順番に入力する
- 社内システムへのデータ登録を自動化する
手動で1件ずつコピー&ペーストしていた作業が、ボタン1つで完了するようになります。100件のデータ入力が手動で2時間かかるとすれば、自動化により数分で完了します。
3つの実装方法の比較一覧
IE廃止後の現在、ExcelからWebフォームに自動入力する主な方法は以下の3つです。
| 項目 | VBA + SeleniumBasic | Power Automate Desktop | TinySeleniumVBA |
|---|---|---|---|
| 難易度 | 中級 | 初級 | 初級〜中級 |
| コスト | 無料 | 無料(Windows 10/11標準搭載) | 無料 |
| プログラミング | VBAコードを書く | 不要(ノーコード) | VBAコードを書く |
| 必要な環境 | SeleniumBasicインストール + ChromeDriver | Windows 10/11 + Power Automate Desktop | VBAモジュールのインポートのみ |
| 対応ブラウザ | Chrome / Edge / Firefox | Chrome / Edge / Firefox | Chrome / Edge |
| 向いている人 | VBA経験者・柔軟な制御をしたい人 | プログラミング未経験者・手軽に始めたい人 | VBA経験者・環境構築を最小限にしたい人 |
| 処理速度 | 高速 | 中速 | 高速 |
IE廃止後に知っておくべきこと
以前は、VBAからCreateObject("InternetExplorer.Application")でIEを起動し、getElementByIdなどでフォーム要素を操作する方法が主流でした。しかし、2022年6月に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 SubFindElementByIdはHTML要素のid属性で要素を特定しますClearで既存の入力値をクリアしてからSendKeysで新しい値を入力しますdriver.Waitでページの読み込みを待機します(ミリ秒単位)- 実際のフォームに合わせてid属性やURLを変更してください
フォームの要素を特定する方法はFindElementById以外にもあります。以下のメソッドを状況に応じて使い分けてください。
| メソッド | 特定方法 | 使用例 |
|---|---|---|
FindElementById | id属性 | id=”name” の要素を取得 |
FindElementByName | name属性 | name=”email” の要素を取得 |
FindElementByCss | CSSセレクタ | input[type=”text”] の要素を取得 |
FindElementByXPath | XPath | 複雑な階層構造の要素を取得 |
FindElementByClass | class属性 | 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でトグルします。

【方法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フォームに自動入力されます。フローが完成したら、上部の実行ボタンを押して動作確認してください。

【方法3】TinySeleniumVBAで自動入力する手順
3つ目の方法は、TinySeleniumVBAという軽量ライブラリを使う方法です。SeleniumBasicのようなインストール作業が不要で、VBAモジュールをインポートするだけで使い始められるのが最大の特長です。
TinySeleniumVBAとは(インストール不要の軽量ライブラリ)
TinySeleniumVBAは、VBAからChrome・Edgeを操作するための軽量なオープンソースライブラリです。
| 項目 | SeleniumBasic | TinySeleniumVBA |
|---|---|---|
| 導入方法 | インストーラーを実行 | 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 SubTinySeleniumVBAでは、要素の特定に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
エラーが発生しても処理を止めずに次の行に進み、最後にまとめて結果を確認できるようにしておくと、大量データの入力時に便利です。

3つの方法の比較|どれを選ぶべき?
ここまで3つの方法を紹介してきました。それぞれの特徴をさらに詳しく比較し、あなたに最適な方法を選ぶためのポイントを解説します。
スキルレベル別おすすめ手法
| スキルレベル | おすすめ手法 | 理由 |
|---|---|---|
| プログラミング未経験 | Power Automate Desktop | ノーコードで直感的に操作でき、学習コストが最も低い |
| VBA初心者 | TinySeleniumVBA | 環境構築が簡単で、短いコードで実装できる |
| VBA中級者以上 | VBA + SeleniumBasic | 柔軟な制御と豊富な機能で複雑な処理にも対応できる |
| チーム共有が必要 | TinySeleniumVBA | インストール不要でExcelファイルごと配布できる |
| 大量データを扱う | VBA + SeleniumBasic | ループ処理の高速化やエラーハンドリングが柔軟 |
処理速度・安定性の比較
| 比較項目 | VBA + SeleniumBasic | Power Automate Desktop | TinySeleniumVBA |
|---|---|---|---|
| 処理速度 | 高速(直接API通信) | 中速(UI操作ベース) | 高速(直接API通信) |
| 安定性 | 高い(明示的な待機制御可能) | 高い(自動リトライ機能あり) | 高い(WebDriver Protocol準拠) |
| 100件処理の目安 | 約5〜10分 | 約10〜20分 | 約5〜10分 |
| 並列処理 | 可能(複数ドライバー起動) | 不可(単一フロー実行) | 可能(複数ドライバー起動) |
処理速度を重視する場合はVBA系(SeleniumBasicまたはTinySeleniumVBA)が適しています。Power Automate DesktopはUI操作をエミュレートする仕組みのため、VBA系と比べると若干遅くなりますが、安定性は十分です。
メンテナンス性とアップデート対応
| 比較項目 | VBA + SeleniumBasic | Power Automate Desktop | TinySeleniumVBA |
|---|---|---|---|
| Chromeアップデート時 | ChromeDriverの更新が必要 | 自動対応(ブラウザ拡張機能経由) | ChromeDriverの更新が必要 |
| コードの修正しやすさ | VBAエディタで直接編集 | GUIフローの編集(直感的) | VBAエディタで直接編集 |
| バージョン管理 | コードをテキストで管理可能 | フローのエクスポート/インポート | コードをテキストで管理可能 |
| 他PCへの展開 | 各PCにSeleniumBasicのインストールが必要 | 各PCにPADのセットアップが必要 | Excelファイルのコピーのみ |
長期的なメンテナンス性では、ChromeDriverの更新が不要なPower Automate Desktopに優位性があります。一方、チーム展開のしやすさではTinySeleniumVBAが最も手軽です。

実務で使えるユースケース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などに一括投入するケースです。テスト目的でダミーデータを大量に登録したい場合にも活用できます。
ただし、自動入力を行う際はフォーム提供元の利用規約を確認してください。自動送信を禁止しているサービスもあるため、業務利用では社内システムやテスト環境での使用を推奨します。

よくあるエラーと対処法
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)
VBAにSeleniumBasicライブラリを組み合わせ、ChromeやEdgeを操作してフォーム要素にアクセスし値を入力します。InternetExplorerオブジェクトを使う旧来の方法はIE廃止により使用できなくなったため、Selenium経由でのブラウザ操作が現在の標準的な方法です。本記事のVBA + Seleniumのセクションで、環境構築からサンプルコードまで詳しく解説しています。
はい、Power Automate Desktopを使えばノーコードでExcelからWebフォームへの自動転記が可能です。Windows 10/11に無料で搭載されており、ドラッグ&ドロップの操作でフローを作成できます。VBAのコードを一切書かずに自動入力を実現できるので、プログラミング未経験の方にもおすすめです。
IE廃止後の代替手段として、(1) SeleniumBasicを使ってChrome/Edgeを操作する方法、(2) TinySeleniumVBAなどの軽量ライブラリを使う方法、(3) Power Automate Desktopを使うノーコード方法の3つがあります。いずれもIEの代わりにモダンブラウザ(Chrome・Edge)を操作する仕組みです。VBAの既存コードからの移行であれば、SeleniumBasicが最も近い書き方で対応できます。
SeleniumBasicは従来から使われているライブラリで、インストーラーの実行と参照設定の追加が必要です。機能が豊富で、複雑なブラウザ操作にも対応できます。TinySeleniumVBAはインストール不要の軽量版で、VBAモジュールをインポートするだけで使えるため導入が最も簡単です。社内で複数のPCに配布する場合は、TinySeleniumVBAの方が手軽に展開できます。
大量データの一括入力にはVBA + Seleniumが最適です。ループ処理による高速な連続入力が可能で、エラーハンドリングも柔軟にカスタマイズできます。処理の途中でエラーが発生しても、該当行をスキップして次の行に進む制御が書けるため、100件以上のデータでも安心して実行できます。少量データや定型業務にはPower Automate Desktopの方がメンテナンスしやすいです。
実際の操作手順をクリックして体験できます。各ステップをクリックしてみましょう。
| A | B | C | D | |
|---|---|---|---|---|
| 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工業 |
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
まとめ
ExcelからWebフォームに自動入力する方法を3つ紹介しました。IE廃止後の現在でも、適切なツールを選べば自動入力は問題なく実現できます。
| 方法 | こんな人におすすめ |
|---|---|
| VBA + SeleniumBasic | VBA経験者で、柔軟な制御や大量データ処理が必要な人 |
| Power Automate Desktop | プログラミング未経験で、手軽に自動化を始めたい人 |
| TinySeleniumVBA | 環境構築を最小限にしたい人、チームへの配布が必要な人 |
まずは自分のスキルレベルと業務の要件に合った方法を1つ選び、簡単なフォームで試してみることをおすすめします。小さく始めて動作を確認できたら、実際の業務フォームに応用していきましょう。
IE時代のコードを使い続けている方は、この機会にぜひ最新の方法に移行してください。一度環境を整えれば、日々のフォーム入力作業を大幅に効率化できます。
▶ GASならブラウザだけでフォーム処理 — GAS入門完全ガイドへ →


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