ACCESS VBA INSERTでレコードを追加する方法

INSERTでレコードを追加する方法

ACCESSのデータはテーブルに保存されます。
テーブルへのデータ入力は、主に入力用フォームから行うことが多いのですが、VBAのプログラミング上でレコードを追加したいときもあります。

その際に利用するのがINSERT INTO構文です。

今回は、ACCESS VBAでINSERTを使ってレコードを追加する方法をご紹介します。


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

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

INSERT INTO構文

VBAでテーブルにレコードを追加するには、SQLのINSERT INTO構文を利用します。
以下の構文です。

INSERT INTO テーブル名 ( フィールド名1 , フィールド名2 , フィールド名3 ) VALUES ( 値1 , 値2 , 値3 ) ;

引数にテーブル名を指定したうえで、フィールド名とそれぞれのフィールドに入力する値(VALUES)を指定していきます。

VBAでの利用方法

では実際にINSERT INTO構文をVBAで利用する方法をご紹介します。
サンプルテーブルとして以下のMST_顧客を用意しました。

こちらに、VBAでレコードを追加していきます。
まずはVisual Basic Editorを起動します。「ALT」+F11キーです。

そこで下記のプロシージャを記述します。
今回は他のイベントプロシージャから呼び出しができるように、Publicプロシージャとして作成しました。

これが、VBAでINSERTを行うための記述です。
いくつかポイントをご説明します。

DoCmd.RunSQL

VBAでSQLを使用する際は、DoCmd.RunSQLメソッドを利用します。

DoCmd.RunSQLに続いて、SQL文を記載します。
この際、SQL文はテキスト型として扱うために「”」(ダブルクォーテーション)で囲むことを忘れないようにしてください。
今回も、DoCmd.RunSQLの直後と最後に「”」がついていることがわかると思います。

フィールド名の指定

フィールド名を指定する際は登録日,顧客名,住所1 のように、単純にフィールド名を列記します。
ここは「”」で囲う必要はありません。

値の指定

一方で値を指定する際は、それぞれのデータ型に合わせた指定が必要です。

日付型であれば「#」で囲います。
テキスト型であれば「”」で囲います。

ただし、上記の構文ではSQL文自体をテキスト型として認識させるために、一番外側で「”」を使用しておりますので、「”」内でさらにテキスト型指定をするために「’」を使っています。’テスト顧客’、’東京都’などの記述がこの例です。

このあたりに注意すれば、INSERTをうまく使えると思います。

作成したプロシージャを実行した結果がこちらです。

一番下にレコードが指定通りに追加されていることが分かると思います。

以上、INSERTでレコードを追加する方法をご紹介しました。


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

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

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

サービス紹介

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