こんにちは!Access大好きブロガーの「なかぜん」です。
「データベースを作ったけど、毎回フォームを手作業で作るのが面倒…」
「同じようなフォームをいくつも作るから、自動化できたらいいのに…」
そんなお悩み、ありませんか?
実は、AccessではVBAを使えばフォームを自動で作成できるんです!
ちょっとしたコードを書くことで、繰り返し作業をぐっと効率化できますよ。

フォーム自動作成ってどういうこと?
フォームをVBAで「コードから作る」
通常、Accessのフォームはデザインビューで手作業で作りますよね。
でも、VBAを使うと、ボタンやラベル、テキストボックスをコードで配置し、レイアウトも自動で設定できます。
こんな場面で役立ちます!
- 複数のテーブルに対して似たフォームを一括生成したいとき
- データ入力用のフォームを動的に作りたいとき
- ユーザーごとにフォームの構成を変えたいとき
実際のコードを見てみよう!
基本のフォーム自動作成コード
では早速、シンプルなフォームを自動作成するVBAコードをご紹介します。
' モジュールやボタンのクリックイベントに記述してOK
Sub CreateSimpleForm()
Dim frm As Form
Dim ctl As Control
' 新しいフォームを作成
Set frm = CreateForm
' ラベルの追加
Set ctl = CreateControl(frm.Name, acLabel, , , "名前:", 500, 500)
' テキストボックスの追加
Set ctl = CreateControl(frm.Name, acTextBox, , , "", 2000, 500)
' フォームのキャプションを変更
Forms(frm.Name).Caption = "自動作成フォーム"
' フォームをデザインビューで開く
DoCmd.OpenForm frm.Name, acDesign
End Sub
コードの解説
CreateForm
:新しいフォームオブジェクトを作成CreateControl
:フォームにラベルやテキストボックスなどのコントロールを追加Forms(frm.Name).Caption
:フォームのタイトルを設定DoCmd.OpenForm
:フォームを開いて内容を確認
このように、数行のコードで基本的なフォームが作成できます♪
注意点とよくあるミス
- コードを実行するには、信頼された場所でデータベースを開く必要があります。
- フォームの名前を扱うときは、一時的な名前になることがあるので注意。
CreateControl
の座標(左=X、上=Y)は、単位がTwips(1cm ≒ 567 Twips)なので調整が必要です。
応用ポイント(中級者向け)
テーブル構造を元に動的にフォーム作成
テーブルのフィールドをループして、フォームに自動でコントロールを追加することもできます。
以下のようなコードで、テーブルの全フィールドに対応したフォームを作成できます。
Sub CreateFormFromTable(tblName As String)
Dim db As DAO.Database
Dim tdf As DAO.TableDef
Dim fld As DAO.Field
Dim frm As Form
Dim ctlLabel As Control, ctlText As Control
Dim topPos As Long
Set db = CurrentDb
Set tdf = db.TableDefs(tblName)
Set frm = CreateForm
topPos = 500
For Each fld In tdf.Fields
Set ctlLabel = CreateControl(frm.Name, acLabel, , , fld.Name, 500, topPos)
Set ctlText = CreateControl(frm.Name, acTextBox, , , fld.Name, 2000, topPos)
topPos = topPos + 500
Next fld
Forms(frm.Name).Caption = tblName & " 入力フォーム"
DoCmd.OpenForm frm.Name, acDesign
End Sub
CreateFormFromTable "社員マスタ"
のように使えば、社員マスタ用フォームが一発で作れます!
まとめ:VBAでフォームを作るとこんなに便利!
- 繰り返し作業を自動化して作業効率UP!
- Accessフォームの構造も理解できるようになる
- 応用すれば動的なUIやユーザー別フォームも作成可能!
次のステップは?
今回のコードをベースにして、サブフォームの追加や、コントロールのプロパティ設定など、さらに進化させることができます。
「やってみたい!」と思った方は、まずはサンプルテーブルを用意してぜひ試してみてくださいね。
それでは、また次回の記事でお会いしましょう!
Accessで業務効率アップ!なかぜんでした 😊
¥2,838 (2025/04/22 19:01:12時点 | 楽天市場調べ)
