Access VBA の DoCmd
オブジェクトは、Access UI上で行える操作を、VBAからプログラム的に実行するためのオブジェクト です。マクロでできる操作をコードで実行できるのが大きな特徴です。
目次
🔹 DoCmd オブジェクトとは?
項目 説明 正式名 DoCmd
(Document Command の略)機能 フォーム・レポートの開閉、クエリ実行、エクスポート、印刷など 対象 Microsoft Access VBA マクロと同等 Access の「マクロ」と同じ操作を VBA で実行可能
🧭 よく使う DoCmd
メソッド一覧
メソッド 説明 DoCmd.OpenForm
フォームを開く DoCmd.Close
フォームやレポートを閉じる DoCmd.RunSQL
SQL文を実行する(例:INSERT/UPDATE) DoCmd.OpenReport
レポートを開く DoCmd.RunMacro
マクロを実行する DoCmd.SetWarnings
警告メッセージの表示/非表示を切り替える DoCmd.GoToRecord
レコード移動 DoCmd.TransferSpreadsheet
Excelへエクスポート/インポート DoCmd.OpenQuery
クエリを実行する DoCmd.OutputTo
レポートやテーブルをPDFやExcelへ出力
✅ 使用例一覧
① フォームを開く
DoCmd.OpenForm "frm_ユーザー一覧", acNormal
② フォームを閉じる
DoCmd.Close acForm, "frm_ユーザー一覧"
③ SQL文を実行(テーブルへデータ追加)
DoCmd.SetWarnings False
DoCmd.RunSQL "INSERT INTO ユーザー (ユーザーID, ユーザー名) VALUES ('u001', '山田太郎');"
DoCmd.SetWarnings True
④ Excel にエクスポート
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, _
"ユーザー", "C:\Users\Export.xlsx", True
⑤ 現在のフォームの次のレコードへ
DoCmd.GoToRecord , , acNext
🧱 SetWarnings の注意点
DoCmd.SetWarnings False
' SQLなどを実行
DoCmd.SetWarnings True
※ False
にすると「確認メッセージ(レコード追加しますか?など)」が出なくなります。Falseにしたままにしないよう注意! エラーが無視される危険があります。
🎯 ユースケース例:ボタンでレコードを追加
Private Sub btn追加_Click()
DoCmd.SetWarnings False
DoCmd.RunSQL "INSERT INTO ユーザー (ユーザーID, ユーザー名) VALUES ('u002', '田中一郎');"
DoCmd.SetWarnings True
MsgBox "ユーザーを追加しました。"
End Sub
📌 補足:DoCmd vs DAO/SQL
方法 使いやすさ 処理対象 補足 DoCmd
直感的 フォーム、マクロ等の操作 ユーザー操作に近い動作 DAO/SQL
高度・柔軟 テーブル・データ処理 複雑な処理、トランザクションに強い
📚 まとめ
特徴 内容 操作を自動化 フォーム操作やクエリをVBAで制御できる マクロの置き換え マクロより柔軟な制御が可能 エラー制御には注意が必要 SetWarnings False
時のエラー無視に注意