導入文
Access VBAを使った業務システムでは、
保存したクエリやSQLをVBAから実行する処理が非常に重要になります。
-
抽出クエリをボタン1つで実行したい
-
更新・追加クエリを自動化したい
-
条件付きクエリを動的に実行したい
こうした処理はすべて、VBAからクエリを実行することで実現できます。
本記事では、
Access VBAでクエリを実行する代表的な方法を、DoCmd・QueryDef・SQL別にまとめて解説します。
初心者から実務担当者まで、
困ったときにすぐ参照できる「保存版ガイド」として活用してください。
DoCmd.OpenQueryでクエリを実行する(最も簡単)
最も簡単な方法は、保存済みクエリをそのまま実行する方法です。
DoCmd.OpenQuery “qrySample”
用途:
-
抽出クエリの表示
-
更新クエリの実行
-
削除クエリの実行
※更新・削除クエリは確認ダイアログが表示されます。
警告メッセージを非表示で実行する
更新クエリを自動実行する場合は、警告をオフにします。
DoCmd.SetWarnings False
DoCmd.OpenQuery “qryUpdate”
DoCmd.SetWarnings True
QueryDefを使ってクエリを実行する方法
QueryDefを使うと、
より細かい制御が可能になります。
Dim qdf As DAO.QueryDef
Set qdf = CurrentDb.QueryDefs(“qrySample”)
qdf.Execute dbFailOnError
メリット:
-
画面を表示せずに実行
-
エラー検知ができる
-
高速処理
パラメータ付きクエリを実行する
クエリにパラメータがある場合:
Dim qdf As DAO.QueryDef
Set qdf = CurrentDb.QueryDefs(“qryParam”)
qdf.Parameters(“開始日”) = #2026/01/01#
qdf.Parameters(“終了日”) = #2026/01/31#
qdf.Execute dbFailOnError
フォームの値を使うことも可能です。
qdf.Parameters(“開始日”) = Me.txtStartDate
SQL文を直接実行する方法(DoCmd.RunSQL)
Dim sql As String
sql = “UPDATE 商品テーブル SET 価格 = 1000 WHERE カテゴリ=’A'”
DoCmd.SetWarnings False
DoCmd.RunSQL sql
DoCmd.SetWarnings True
SQLをQueryDefとして実行する(推奨)
Dim db As DAO.Database
Dim qdf As DAO.QueryDef
Dim sql As String
sql = “DELETE FROM 商品テーブル WHERE 在庫=0”
Set db = CurrentDb
Set qdf = db.CreateQueryDef(“”, sql)
qdf.Execute dbFailOnError
メリット:
-
高速
-
安定
-
エラー処理しやすい
SelectクエリをRecordsetとして扱う
クエリ結果をRecordsetとして処理できます。
Dim rs As DAO.Recordset
Set rs = CurrentDb.OpenRecordset(“qrySample”)
Do Until rs.EOF
Debug.Print rs!商品名
rs.MoveNext
Loop
👉 関連記事
Access VBAでRecordsetを使いこなす方法まとめ
クエリ実行でよくあるエラー
よくあるトラブル:
-
クエリ名が存在しない
-
パラメータ名が違う
-
型が一致しません
-
実行権限エラー
原因の多くは:
-
名前のスペルミス
-
日付・文字列の書式違い
-
Null値
にあります。
👉 関連記事
Accessでよく出る「型が一致しません」エラーの正体
クエリ実行を安定させるポイント
-
Option Explicit を使う
-
dbFailOnError を指定
-
エラー処理を入れる
-
警告を元に戻す
例:
On Error GoTo EH
qdf.Execute dbFailOnError
Exit Sub
EH:
MsgBox Err.Description
Excel連携との組み合わせ
クエリ結果はExcel出力とも相性が良いです。
用途:
-
帳票作成
-
集計表作成
👉 関連記事
Access VBAでExcelへセル指定で出力する方法|Range・Cellsの実践例
参考書で体系的に学ぶのもおすすめ
クエリ操作を含めてAccess VBAを体系的に学ぶには、参考書も役立ちます。
Access VBAを基礎から学びたい方は、定番の参考書も参考になります。
まとめ
Access VBAからクエリを実行する方法には、
-
DoCmd.OpenQuery
-
QueryDef.Execute
-
SQL直接実行
-
Recordset連携
といった複数の方法があります。
用途に応じて使い分けることで、
安全で高速な処理が実現できます。
本記事を入口として、
各関連リンクの記事と組み合わせて活用してください。