accessデータベース操作 PR

Access VBAでRecordsetを使いこなす方法まとめ|基本構文・ループ・更新・注意点

記事内に商品プロモーションを含む場合があります

導入文

Access VBAを使ったプログラムでは、
Recordset(レコードセット)を扱えるかどうかが実務レベルの分かれ道になります。

  • テーブルのデータを1件ずつ処理したい

  • クエリ結果を順番に読み込みたい

  • 条件に合うレコードを更新したい

こうした処理は、すべてRecordsetを使って実現します。

本記事では、
Access VBAでRecordsetを使うための基本構文から実務でよく使うパターンまでを一覧でまとめました。

初心者の方から実務担当者まで、
困ったときにすぐ参照できる「保存版ガイド」として活用してください。

Recordsetとは何か?

Recordsetとは、
テーブルやクエリのデータをVBAから扱うためのオブジェクトです。

イメージとしては:

  • テーブルの中身を1行ずつ取り出せる

  • クエリ結果を順番に読み込める

  • フィールドの値を自由に操作できる

という「データの窓口」のような存在です。


Recordsetの基本構文(OpenRecordset)

最も基本的な書き方は次の通りです。

Dim rs As DAO.Recordset
Set rs = CurrentDb.OpenRecordset(“テーブル名”)

クエリを指定する場合:

Set rs = CurrentDb.OpenRecordset(“テーブル名”, dbOpenSnapshot)

レコードを1件ずつ処理する(EOFループ)

最もよく使うのが EOF を使ったループ処理です。

Do Until rs.EOF
Debug.Print rs!商品名
rs.MoveNext
Loop

ポイント:

  • rs.EOF = 最後のレコードに到達したか

  • rs.MoveNext を忘れると無限ループになる

フィールドの値を取得する方法

rs!フィールド名

例:

Dim price As Long
price = rs!価格

Null対策:

price = Nz(rs!価格, 0)

レコードを追加する(AddNew)

rs.AddNew
rs!商品名 = “テスト商品”
rs!価格 = 1000
rs.Update

レコードを更新する(Edit)

rs.Edit
rs!価格 = 1200
rs.Update

レコードを削除する(Delete)

rs.Delete
rs.MoveNext

※削除後は MoveNext を忘れないことが重要です。

クエリをRecordsetとして扱う

保存クエリもRecordsetとして扱えます。

Set rs = CurrentDb.OpenRecordset(“qrySample”)

これにより:

  • 抽出条件付きデータ

  • 集計結果
    を簡単に処理できます。

Recordsetでよくあるエラー

よくあるトラブル

  • 型が一致しません

  • オブジェクトが見つかりません

  • EOFで止まる

  • 更新できない

主な原因:

  • Null処理不足

  • フィールド名の誤記

  • 読み取り専用Recordset

  • データ型不一致

👉 関連記事
Accessでよく出る「型が一致しません」エラーの正体

Recordsetを安全に使うための基本ルール

必ず守るポイント:

  • Option Explicit を使う

  • rs.Close を忘れない

  • Set rs = Nothing

  • エラー処理を入れる

例:

On Error GoTo EH

Set rs = CurrentDb.OpenRecordset(“テーブル名”)

Do Until rs.EOF
Debug.Print rs!商品名
rs.MoveNext
Loop

rs.Close
Set rs = Nothing
Exit Sub

EH:
MsgBox Err.Description

Excel連携との組み合わせ

Recordsetのデータは、Excel出力とも相性が良いです。

  • 帳票作成

  • 一覧表作成

  • CSV出力

👉 関連記事
Access VBAでExcelへセル指定で出力する方法|Range・Cellsの実践例

Recordsetを理解するメリット

Recordsetを理解すると:

  • テーブル操作が自由になる

  • クエリ処理を自動化できる

  • Excel連携が簡単になる

  • 実務レベルのAccessアプリが作れる

という大きなメリットがあります。

参考書で体系的に学ぶのもおすすめ

Recordsetを含めてAccess VBAを体系的に学ぶには、参考書も役立ちます。

Access VBAを基礎から学びたい方は、定番の参考書も参考になります。

AmazonでAccess VBAの定番本を見る

まとめ

Recordsetは、Access VBAの中核となる重要なオブジェクトです。

  • データ取得

  • ループ処理

  • 追加・更新・削除

  • クエリ連携

といった処理は、すべてRecordsetを使って実現できます。

本記事を入口として、各関連リンクの記事を活用することで、
Access VBAのデータベース操作スキルを体系的に身につけることができます。

困ったときは本記事を「Recordsetの辞書」として参照してください。