Access VBA の DoCmd オブジェクト

Access VBA の DoCmd オブジェクトは、Access UI上で行える操作を、VBAからプログラム的に実行するためのオブジェクトです。マクロでできる操作をコードで実行できるのが大きな特徴です。


目次

🔹 DoCmd オブジェクトとは?

項目説明
正式名DoCmd(Document Command の略)
機能フォーム・レポートの開閉、クエリ実行、エクスポート、印刷など
対象Microsoft Access VBA
マクロと同等Access の「マクロ」と同じ操作を VBA で実行可能

🧭 よく使う DoCmd メソッド一覧

メソッド説明
DoCmd.OpenFormフォームを開く
DoCmd.Closeフォームやレポートを閉じる
DoCmd.RunSQLSQL文を実行する(例:INSERT/UPDATE)
DoCmd.OpenReportレポートを開く
DoCmd.RunMacroマクロを実行する
DoCmd.SetWarnings警告メッセージの表示/非表示を切り替える
DoCmd.GoToRecordレコード移動
DoCmd.TransferSpreadsheetExcelへエクスポート/インポート
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 時のエラー無視に注意

よかったらシェアしてね!
目次