Access VBAのDoCmd完全入門|フォーム・レポート操作の基本を解説

Access VBAの学習を始めると、DoCmdというコードをよく見かけます。
初心者だと、
- DoCmdって何?
- 何のために使うの?
- どんな処理ができるの?
と迷いやすい部分です。
結論からいうと、DoCmdは「Accessの操作をVBAから実行するための命令」です。
たとえば、次のような操作をVBAから実行できます。
- フォームを開く
- レポートを表示する
- クエリを実行する
- レコードを保存する
- Accessを終了する
Accessの画面で手動操作している内容を、VBAで自動化するイメージです。
DoCmdでできること
DoCmdではさまざまなAccess操作を実行できます。
代表的なものを見てみましょう。
| 命令 | 内容 |
|---|---|
| DoCmd.OpenForm | フォームを開く |
| DoCmd.OpenReport | レポートを表示する |
| DoCmd.RunSQL | SQLを実行する |
| DoCmd.OpenQuery | クエリを実行する |
| DoCmd.Close | フォームやレポートを閉じる |
| DoCmd.Quit | Accessを終了する |
実務ではフォーム操作とクエリ実行で使う機会が特に多いです。
よく使うDoCmd命令一覧
フォームを開く
DoCmd.OpenForm "F_社員一覧"「F_社員一覧」というフォームを開きます。
コード解説
DoCmd.OpenFormフォームを開く命令です。
"F_社員一覧"開きたいフォーム名を指定しています。
フォーム名を間違えるとエラーになるため注意しましょう。
クエリを実行する
DoCmd.OpenQuery "Q_売上更新"保存済みクエリを実行します。
更新クエリや追加クエリを実行するときによく使います。
SQLを直接実行する
DoCmd.RunSQL "DELETE FROM T_社員 WHERE 退職 = True"SQL文を直接実行できます。
テーブルのデータ更新処理でよく使われます。

レコードを保存する
DoCmd.RunCommand acCmdSaveRecord現在編集中のレコードを保存します。
入力フォームの保存ボタンでよく使われます。
フォームを閉じる
DoCmd.Close現在開いているフォームを閉じます。
終了ボタンなどでよく使われます。
DoCmdの実践サンプル
実際によくある業務画面の例を見てみましょう。
社員一覧フォームから、社員登録フォームを開く例です。
Private Sub btn社員登録_Click()
DoCmd.OpenForm "F_社員登録"
End Subコード全体の目的
ボタンをクリックしたときに、社員登録フォームを開く処理です。
1行ずつ解説
Private Sub btn社員登録_Click()ボタンがクリックされたときに動くイベントです。
DoCmd.OpenForm "F_社員登録"「F_社員登録」というフォームを開いています。
End Subイベント処理の終了です。
実務での活用ポイント
実務では、メニュー画面から各フォームを開く構成が非常に多いです。
そのため、
- 顧客一覧を開く
- 売上一覧を開く
- 登録フォームを開く
といった場面でDoCmd.OpenFormを頻繁に使います。
DoCmdを使うときの注意点
フォーム名・クエリ名のミスに注意
DoCmdでは、フォーム名やクエリ名を文字列で指定します。
DoCmd.OpenForm "F_社員一覧"名前が違うと実行エラーになります。
実務ではフォーム名のルールを統一すると管理しやすくなります。
たとえば、次のように接頭辞を付けるケースが多いです。
- フォーム → F_
- クエリ → Q_
- テーブル → T_
RunSQLはデータ更新に注意
RunSQLはデータを直接更新できます。
便利ですが、条件を間違えると大量データを誤更新する危険があります。
DELETE FROM T_社員のようにWHERE句を書き忘れると、全件削除になるため注意が必要です。
エラー処理も重要
実務では、フォームが存在しない場合やクエリ実行エラーも考慮する必要があります。
そのため、DoCmdを使う処理ではエラー対応を書くことも重要です。
On Error GoTo ErrHandler
DoCmd.OpenForm "F_社員一覧"
Exit Sub
ErrHandler:
MsgBox "フォームを開けませんでした。"初心者のうちから、エラー処理を書く習慣を付けると保守しやすくなります。

まとめ
DoCmdは、Accessの操作をVBAから実行するための命令です。
特に実務では、次のような場面で頻繁に使います。
- フォームを開く
- クエリを実行する
- レコードを保存する
- レポートを表示する
- DoCmd.OpenForm
- DoCmd.OpenQuery
- DoCmd.RunSQL
まずは、上記の構文あたりを使えるようになるとAccess VBAでできることが一気に広がります。
小さなフォーム操作から実際に試して、動きを確認しながら覚えていきましょう。
コメント