Excelデータベースの入力フォームを作成|別シートに自動入力可【VBA不要】

- 「標準のフォーム機能だとデザインを変更できない…」
- 「マクロ/VBAのプログラムを記述せずに独自の入力画面を作りたい」
Excel(エクセル)
本記事では、
※ 本記事では「データベース=テーブル」
目次
Excelのデータベースにデータを入力できるフォームを実装・作成する方法には、
| 手法 | 特徴 |
|---|---|
| 標準フォーム機能 | ✅ Excel標準機能で、 ✅ 数式を設定した項目を自動で保護する ❌ 画面デザインを自由に変更できない ❌ シート上に固定表示できない ❌ 複数セルへの貼り付けなど、 |
| Power Query | ✅ 入力画面のレイアウトを自由にカスタマイズできる ✅ 数式・関数によるセル値の自動記入(連番・日付など) ✅ 基本システムはマクロ/VBAなしで実装可能 ❌ システム構築の難易度がやや高い ❌ データの反映に「すべて更新」 |

VBA/マクロによる手法もありますが、
Excel標準機能:フォーム機能でデータ入力する方法
フォーム機能は、
表示方法:クイックアクセスツールバーにフォーム機能を追加
デフォルトでは、
追加手順は以下の通りです。
これで、
操作方法:フォーム機能でデータを登録・検索・修正
テーブル内のセルを選択した状態で、
新規データの追加方法
- [新規] ボタンをクリックする
- 各フィールドにデータを入力する
- Enter キーを押すと、
テーブルの最終行にデータが追加される
その他の操作方法
- 検索 :[検索条件] ボタンをクリックし、
条件を入力して [次を検索] で該当データを表示する - 更新 :フォーム上でフィールドの値を書き換え、
Enter キーを押す - 削除 :対象のデータを表示した状態で [削除] ボタンを押す
Power Queryを使うと、
仕組み:入力フォームからデータベースへ自動入力する流れ
データの流れは以下の通りです。
- 入力フォーム(帳票形式のシート)
:ユーザーがデータを直接入力する - 入力用テーブル :数式参照で入力フォームのデータを取得する
- データベース :Power Queryで入力用テーブルとデータベースを結合し、
データベース内にデータを追加する

「Power Queryで出力したテーブルを再度Power Queryに取り込む」
入力データをデータベースに反映するには、
連番・日付の自動記入にも対応可能
Power Queryを使った入力フォームでは、
- 連番 :=MAX(T_データベース[連番])+1
- 日付 :=TODAY()
データベースのテーブル内では、

Power Queryを経由すると、
作成手順:VBAなしで入力フォームを自作する方法
入力フォームシートの作成
入力フォームとなるシートを作成し、
記入欄は背景色を変えるとわかりやすくなります。


画像の例では、
入力フォーム中で、
- プルダウンリスト(データの入力規則)
:[データ] タブの [データの入力規則] から設定する - オプションボタン・チェックボックスなど(フォームコントロール)
:[開発] タブの [挿入] から配置する - 右クリック > ダブルクリックでラベルの編集が可能
- 右クリック > [コントロールの書式設定] > 「リンクするセル」
を設定して、 ボタンとセル値がリンクする - オプションボタンはグループボックス内に配置すると、
複数のボタンを1つのセルと紐づけられる
入力フォームのデータをテーブルに集約
入力フォーム内のデータを集約するためのテーブルを新規に作成します。
-
入力フォームとは別の場所(同じシートの右側や別シート)
に、 テーブルを作成する(ショートカット:Ctrl + T) -
(推奨)
テーブル名を設定する(例:T_入力用) -
テーブル内のセルに、
入力フォームの記入欄を参照する数式を記入する 例)
登録番号 対応日 顧客名 対応内容 対応者 ステータス 要上長報告 =C5 =C6 =C7 =C8 =C9 =SWITCH(D10, 1, "未着手", 2, "対応中", 3, "完了", "") =IF(D11="","",D11)

入力フォームのデータをPower Queryに取り込む
Power Queryで出力したテーブルを再度取り込む
上記の手順で、

設定直後は重複した行が追加されますが、
データ入力:フォームからデータベースへ登録
入力フォームからデータベースへデータを登録する手順は以下の通りです。
- 入力フォームシートの記入欄にデータを入力する
- [データ] タブの [すべて更新] をクリックする
(ショートカット:Ctrl + Alt + F5)
「すべて更新」
「データの追加/送信」
Power Queryを使った入力フォームを他の人に使ってもらう場合は、
「使い方がわからない」
以下のいずれかを設置するのがオススメです。
- 方法1 説明文 : データを送信するには「更新」操作(ショートカット:Ctrl + Alt + F5)を行ってください を明記する。
- 方法2 送信ボタン : マクロ/VBAで「更新」
操作を行う処理を作成し、 ボタンに登録・設置する(後述) 。
データ管理:既存データの修正・追加方法
- データの修正 :データベースのテーブル内で、
対象セルの値を直接書き換える - データの追加 :データベースのテーブルに直接行を追加して、
既存データを取り込む

すでに既存のデータがある場合は、
【参考】「送信」 ボタン・記入セルの自動クリアはVBA/マクロが必須
入力フォームからデータベースにデータを追加する仕組みはマクロ/VBAなしでも構築できますが、
VBA/マクロを使った「データ追加操作(Power Queryの更新)
-
VBAエディター(VBE)
を起動する(ショートカット:Alt + F11) -
[標準モジュール] にコードを記述し、
VBEを閉じる Sub SubmitData() ' ========================== ' クリアターゲットの設定 Const CLEAR_TARGET_SHEET As String = "入力フォーム" ' シート名 Const CLEAR_TARGET_RANGE As String = "C7:C9,D10:D11" ' 手入力するセルを指定 ' ========================== ' 画面のちらつきを抑え、処理速度を向上させる Application.ScreenUpdating = False ' 1. ブック内のすべてのPower Queryを一括更新してデータをデータベースへ蓄積する ActiveWorkbook.RefreshAll ' 2. 指定した入力フォームの記入セルを一括でクリアする Sheets(CLEAR_TARGET_SHEET).Range(CLEAR_TARGET_RANGE).ClearContents ' 画面更新を元に戻す Application.ScreenUpdating = True ' データ更新とクリアが完了したことをユーザーにポップアップ通知する MsgBox "データを送信し、入力欄をクリアしました。", vbInformation, "送信完了" End Subvba
-
[開発] タブの [挿入] > [ボタン(フォームコントロール)]からボタンを挿入し、
「マクロの登録」 画面で SubmitData を選択する

CLEAR_TARGET_SHEET と CLEAR_TARGET_RANGE の値は、
本記事の要点は以下の2点です。
- 標準フォーム機能 :クイックアクセスツールバーに追加すれば、
テーブルの1行分のデータをカード形式で入力・検索・修正できる。 ただし、 画面デザインの変更はできない。 - Power Queryによる入力フォーム :入力画面のレイアウトを自由に設計でき、
VBA不要で別シートのデータベースへ自動入力する仕組みを構築できる。 - 「更新」
操作ボタンを設置したい場合のみ、 マクロ/VBAを使用する。
- 「更新」
Excelで本格的なデータベース(疑似リレーショナルデータベース)










