ACCESS VBAでクエリを実行する方法

VBAでクエリを実行する方法

ACCESS VBAを使う方はSQLについてもある程度利用できるかもしれません。

ただ、テーブルの操作をすべてVBA上のプログラムで処理するのは慣れないと難しいものです。
ACCESSのクエリはGUIでテーブルの抽出や並び替え、一括更新や削除などができるので使いやすい機能です。
こうしたクエリをVBA上から実行する方法についてご説明します。


こんにちは。
はこにわガジェット (@hakoniwagadget) です。

ACCESSを使った売上管理、顧客管理などのデータベース開発を行っています。
ACCESSは基本機能だけでも十分便利ですが、VBAを使うことで格段に使いやすいデータベースを作成可能です。
この記事ではACCESSでのVBAの使い方をご紹介していきます。

サンプルデータ

今回はこちらのサンプルデータを準備しました。

テーブル

売上テーブルという、売上情報を格納したテーブルです。

クエリ

売上テーブルの商品IDを1から2へ変更する更新クエリです。

このクエリを実行する際は、ACCESSの操作画面からクエリを実行すればよいわけですが、ユーザーにACCESSのクエリを実行させるのは、操作に慣れていないユーザーの場合は難易度が高いケースもあります。

そういった場合にVBAで実行できるようにしておけば、ACCESSの操作に不慣れなユーザーでも迷わずに処理ができるのです。

VBAコード

それでは、上記の更新クエリ「売上更新クエリ」をVBAで実行するためのコードを書いてみましょう。

サンプルのためにフォームを作成しました。

このフォームのクエリ実行ボタンを押すと、クエリが処理されるように設定します。

フォームをデザインビューで開き、クエリ実行ボタンのクリック時イベントにイベントプロシージャを設定します。

ここで設定しているイベントプロシージャの内容は以下の通りです。


Private Sub クエリ実行_ボタン_Click()

    DoCmd.SetWarnings False
    DoCmd.OpenQuery "売上更新クエリ"
    DoCmd.SetWarnings True

  MsgBox "処理が完了しました。", vbInformation + vbOKOnly, "処理完了"

End Sub

実際にクエリを実行しているのは、2行目の

DoCmd.OpenQuery "売上更新クエリ"

です。
その前後の「DoCmd.SetWarnings」はACCESS上でのメッセージ表示を一時停止し、クエリ実行後に再開させるために記述しています。

これが無くても動作はするのですが、これを記載していないと更新クエリを実行した際に、下記のメッセージが出てしまいます。

これを毎回「はい」を押すのは面倒なのでこのメッセージが出ないようにしているというわけです。

アクションクエリ(追加、更新、削除クエリ)をVBAから実行する際は DoCmd.SetWarnings を設定しておくとよいでしょう。

さらに最後にメッセージが表示されるよう、

MsgBox "処理が完了しました。", vbInformation + vbOKOnly, "処理完了"

を記載しています。
これにより、クエリの実行後に画面にメッセージが表示されます。

アクションクエリで実行する処理の件数が少ないうちは問題ないのですが、データが多くなるとクエリの処理が完了するまでに時間がかかるようになります。
そうした場合に、処理が終わったことをユーザーに明示的に知らせるために、メッセージを表示させておくとよいでしょう。

逆に、ボタンを押しただけでユーザーに対して全く反応がないと、ボタンが動作していないと誤認して何度もボタンを押してしまうこともあります。
そうした意味でも処理完了メッセージを出しておくとトラブル防止に役立つと思います。

以上、ACCESS VBAでクエリを実行する方法についてご紹介しました。


ACCESSを使いこなせば、業務の効率化や自動化が実現できます。
しかし、自分でACCESSを学ぶには時間がない、難しそうで不安、という方も多いでしょう。

そんな時は、ACCESS開発歴20年以上、過去に100以上のACCESSデータベースを開発してきた私(@hakoniwagadget)にお任せください。

ACCESSの新規開発、既存のACCESSの修正、ACCESSの操作レッスンなど様々なサービスをご提供しています。
ご興味のある方は下記のサービス一覧をご覧ください。

サービス一覧

最後までお読みいただき、ありがとうございました。