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

  • 顧客データ登録
  • 売上データ保存
  • CSV取込
  • フォーム入力保存

Access VBAではデータ追加処理を行う場面が非常に多いです。

ただ初心者だと、

  • どうやって追加するの?
  • AddNewって何?
  • INSERT INTOとの違いは?

と混乱しやすいポイントでもあります。

この記事では、Access VBA初心者向けにデータ追加の基本をやさしく解説します。

目次

Access VBAでデータ追加する方法は2種類ある

結論からいうと、Access VBAでデータ追加する方法は主に2つあります。

方法特徴
AddNewレコードセットを使って追加する
INSERT INTOSQLで直接追加する

実務ではどちらもよく使います。

ただ初心者はまず、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でできることがかなり増えます。

コメント

コメントする

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

CAPTCHA

目次