accessデータベース操作 PR

Access VBAでクエリをVBAから実行する方法まとめ|DoCmd・QueryDef・SQL完全ガイド

記事内に商品プロモーションを含む場合があります

導入文

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を基礎から学びたい方は、定番の参考書も参考になります。

AmazonでAccess VBAの定番本を見る

まとめ

Access VBAからクエリを実行する方法には、

  • DoCmd.OpenQuery

  • QueryDef.Execute

  • SQL直接実行

  • Recordset連携

といった複数の方法があります。

用途に応じて使い分けることで、
安全で高速な処理が実現できます。

本記事を入口として、
各関連リンクの記事と組み合わせて活用してください。