【Access VBA】データ追加入門|AddNewとINSERT INTOの使い方

- 顧客データ登録
- 売上データ保存
- CSV取込
- フォーム入力保存
Access VBAではデータ追加処理を行う場面が非常に多いです。
ただ初心者だと、
- どうやって追加するの?
- AddNewって何?
- INSERT INTOとの違いは?
と混乱しやすいポイントでもあります。
この記事では、Access VBA初心者向けにデータ追加の基本をやさしく解説します。
Access VBAでデータ追加する方法は2種類ある
結論からいうと、Access VBAでデータ追加する方法は主に2つあります。
| 方法 | 特徴 |
|---|---|
| AddNew | レコードセットを使って追加する |
| INSERT INTO | SQLで直接追加する |
実務ではどちらもよく使います。
ただ初心者はまず、AddNewから覚えるのがおすすめです。
AddNewが初心者向けな理由
AddNewは次のような特徴があります。
- テーブルへ直接値を追加する感覚で使える
- コードの流れが理解しやすい
- フォーム開発との相性が良い
特にAccess初心者は「1件ずつ保存する処理」を作ることが多いため、まずはAddNewから覚えると理解しやすいです。
AddNewを使ってデータ追加する方法
サンプルコード
Dim rs As DAO.Recordset
Set rs = CurrentDb.OpenRecordset("T_社員")
rs.AddNew
rs!社員名 = "田中"
rs!部署 = "営業"
rs.Update
rs.Close
Set rs = Nothingコードの目的
テーブル「T_社員」に新しい社員データを追加しています。
1行ずつ解説
Set rs = CurrentDb.OpenRecordset("T_社員")でテーブルを開いています。
Recordset(レコードセット)とは、テーブルデータを操作するためのオブジェクトです。
次に、rs.AddNewで新規追加モードへ切り替えています。
この状態になると、新しいレコードへ値を入力できます。
そして、
rs!社員名 = "田中"のようにフィールドへ値をセットします。
最後に、rs.Updateを実行して保存しています。
Updateを書き忘れない
初心者がかなりやりがちなミスです。
Updateを書かないと保存されません。
「値を入れたのに追加されない」という場合は、まずUpdate忘れを確認しましょう。
フォーム保存処理でよく使う
AddNewはフォーム入力データ保存で非常によく使います。
例えば、次のような場面です。
- 顧客登録フォーム
- 売上入力フォーム
- 問い合わせ管理
1件ずつ登録する処理と相性が良いのが特徴です。
INSERT INTOでデータ追加する方法
実務ではSQLを使って追加することも非常に多いです。
サンプルコード
Dim sql As String
sql = "INSERT INTO T_社員 (社員名, 部署) " & _
"VALUES ('田中', '営業')"
CurrentDb.Execute sqlコードの目的
SQLを使って社員データを追加しています。
INSERT INTOとは?
INSERT INTOは、データを追加するSQLです。
Access SQLではかなり頻繁に使います。
VBAだけでなく、クエリ作成でも登場します。
CurrentDb.Executeとは?
Executeは、SQLを実行するためのメソッドです。
実務では、次のような処理で頻繁に使います。
- 追加処理
- 更新処理
- 削除処理
大量データ処理に強い
INSERT INTOは大量データ追加と相性が良いです。
例えば、次のようば処理でよく使います。
- CSVインポート
- 売上データ一括登録
- 他テーブルからコピー
SQLベースで処理できるため、AddNewより高速になるケースも多いです。
実務でよくあるエラーと注意点
Nullエラー
未入力データがあるとエラーになることがあります。
実務では、Nz()をよく使います。

シングルクォート問題
例えば、O'Connorのような名前が入るとSQLエラーになることがあります。
実務では、Replaceで対策することが多いです。
Replace(文字列, "'", "''")型不一致エラー
数値型なのに文字列を入れるとエラーになります。
テーブル設計とデータ型は必ず確認しましょう。

オブジェクト解放忘れ
AddNewではRecordsetを使うため、
rs.Close
Set rs = Nothingを忘れないようにしましょう。
実務ではメモリ使用量や不具合防止のためにも重要です。
実務での使い分けとまとめ
実務では、
- 少量データ → AddNew
- SQLベース処理 → INSERT INTO
で使い分けることが多いです。
| 場面 | おすすめ |
|---|---|
| フォーム保存 | AddNew |
| CSV取込 | INSERT INTO |
| 大量データ処理 | INSERT INTO |
| 1件ずつ登録 | AddNew |
初心者はまず、AddNewを理解するとAccess VBAの基礎がかなり身につきます。
その後、INSRT INTOを覚えると実務対応力がかなり上がります。
特に重要なのは、次の3つです。
- Update忘れ
- Null対策
- 型不一致対策
まずは小さいサンプルコードを実際に動かしながら、
- データ追加
- SQL実行
- エラー確認
を試してみてください。
ここを理解できると、Access VBAでできることがかなり増えます。
コメント