【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(削除)

実務では非常に使用頻度が高いため、早めに使い方へ慣れておくと、業務効率化できる幅が大きく広がります。

まずは小さなテーブルで、簡単な追加処理から試してみましょう。

コメント

コメントする

コメントは日本語で入力してください。(スパム対策)

CAPTCHA

目次