【Access VBA】RunSQLの使い方を初心者向けにわかりやすく解説

Access VBAでデータ更新処理を作っているとDoCmd.RunSQLというコードをよく見かけます。
ただ初心者だと、
- RunSQLって何?
- どんな場面で使うの?
- 普通のクエリと何が違うの?
と迷いやすい部分です。
RunSQLは、VBAからSQL文を実行できる便利な命令です。
特に次のような業務処理で頻繁に使われます。
- データ追加
- データ更新
- データ削除
この記事では、Access VBAのRunSQLの基本から実践的なコード例、実務での注意点まで初心者向けにわかりやすく解説します。
Access VBA RunSQLとは
RunSQLとは、VBAからSQL文を実行するための命令です。
正式にはDoCmd.RunSQLという形で使用します。
主に実行できるのは、
- INSERT INTO(追加)
- UPDATE(更新)
- DELETE(削除)
などの更新系SQLです。
Access画面で手動実行している更新クエリを、VBAから自動実行できるイメージです。

RunSQLの基本構文
基本構文はこちらです。
DoCmd.RunSQL "SQL文"ダブルクォーテーション内に、実行したいSQLを書きます。
追加クエリの例
DoCmd.RunSQL "INSERT INTO T_社員 (社員名, 部署) VALUES ('田中', '営業部')"T_社員テーブルへ新しいデータを追加しています。
コード解説
INSERT INTO T_社員データを追加する対象テーブルを指定しています。
(社員名, 部署) VALUES ('田中', '営業部')
追加するフィールド名と実際に登録する値を指定しています。

更新クエリの例
DoCmd.RunSQL _
"UPDATE T_社員 " & _
"SET 部署 = '総務部' " & _
"WHERE 社員ID = 1"社員IDが1のデータだけを更新しています。

削除クエリの例
DoCmd.RunSQL _
"DELETE FROM T_社員 " & _
"WHERE 社員ID = 1"社員IDが1のデータを削除しています。
RunSQLの実践サンプル
ここでは、フォームの登録ボタンからデータ追加する例を見てみましょう。
Private Sub btn登録_Click()
DoCmd.RunSQL "INSERT INTO T_社員 (社員名, 部署) VALUES ('田中', '営業部')"
MsgBox "登録しました"
End Subコード全体の目的
登録ボタンを押したときに、社員データを追加する処理です。
実務でよくある使い方
実務では、次のような処理でRunSQLが頻繁に使われます。
- 売上データ更新
- 在庫数更新
- 月次データ一括処理
- 退職者データ削除
- ボタンによる登録処理
特に、「ボタンを押したら更新する」という業務システムで非常によく登場します。
RunSQLでよくあるエラーと注意点
WHERE句を書き忘れる
RunSQLで最も危険なのが、WHERE句の書き忘れです。
DoCmd.RunSQL "DELETE FROM T_社員"これを実行すると、全データ削除になります。
実務では非常に危険なミスです。
UPDATEやDELETEでは、必ずWHERE句を確認しましょう。
確認メッセージが表示される
RunSQLを実行すると、
- ○件更新します
- ○件削除します
といったAccessの確認メッセージが表示されます。
これを非表示にしたい場合は、次のコードを使用します。
DoCmd.SetWarnings False警告を非表示にする例
DoCmd.SetWarnings False
DoCmd.RunSQL "UPDATE T_社員 SET 部署 = '営業部'"
DoCmd.SetWarnings True警告表示をOFFにしてからSQLを実行しています。
実務での重要ポイント
SetWarnings Falseを使用した場合は、必ず最後にTrueへ戻しましょう。
戻し忘れると、Access全体で警告が表示されなくなります。
その結果、誤更新に気づきにくくなる危険があります。
エラー処理も重要
実務では、SQL実行エラーへの対応も重要です。
Private Sub btn更新_Click()
On Error GoTo ErrHandler
DoCmd.RunSQL "UPDATE T_社員 SET 部署 = '営業部'"
MsgBox "更新完了"
Exit Sub
ErrHandler:
MsgBox "更新中にエラーが発生しました"
End Subエラー処理を書くことで、トラブル時の原因調査もしやすくなります。

実務での活用ポイント
RunSQLを使えるようになると、Access業務システムの自動化範囲が一気に広がります。
特に実務では、フォーム入力だけでは対応できない、
- 一括更新
- 条件付き更新
- 定期メンテナンス処理
- 大量データ更新
などで非常によく使われます。
ただし、RunSQLはデータを直接更新するため、誤ったSQLを書くと大きな事故につながります。
最初は必ずテスト用テーブルで試しながら、動きを確認するのがおすすめです。
まとめ
Access VBAのRunSQLは、VBAからSQL文を実行するための命令です。
特に、次のような更新処理でよく使われます。
- INSERT INTO(追加)
- UPDATE(更新)
- DELETE(削除)
実務では非常に使用頻度が高いため、早めに使い方へ慣れておくと、業務効率化できる幅が大きく広がります。
まずは小さなテーブルで、簡単な追加処理から試してみましょう。
コメント