【Access VBA】CurrentDbとは?使い方を初心者向けに解説

Access VBAを勉強していると、CurrentDbというコードがよく出てきます。
初心者だと、
- CurrentDbって何?
- なぜ必要なの?
- どんな場面で使うの?
と疑問に感じやすい部分です。
ただ、Access VBAで実務的な開発をするならCurrentDbはかなり重要です。
例えば、 次のような場面で頻繁に使います。
- テーブルを開く
- SQLを実行する
- レコードを取得する
- データ更新する
この記事では、Access VBA初心者向けにCurrentDbの意味と使い方をやさしく解説します。
CurrentDbとは?
結論からいうと、CurrentDbは現在開いているAccessデータベースを表します。
つまり、 今開いているAccessファイルをVBAで操作するためのオブジェクトです。
Access VBAでは、テーブルやクエリを操作するときに頻繁に使います。
よくある基本コード
CurrentDb.OpenRecordset("T_社員")これは、 T_社員テーブルを開くという意味になります。
初心者向けイメージ
CurrentDbは、現在のAccessファイルそのものと思うと理解しやすいです。
CurrentDbの基本的な使い方
実務では、CurrentDbを使ってテーブルやクエリを操作します。
まずはよく使う基本コードを見てみましょう。
レコードセットを取得する
Dim rs As DAO.Recordset
Set rs = CurrentDb.OpenRecordset("T_社員")コードの目的
テーブル「T_社員」のデータを取得しています。
これでVBAからテーブルデータを扱えるようになります。
1行ずつ解説
まず、
Dim rs As DAO.Recordsetでレコードセット変数を作成しています。
次に、
Set rs = CurrentDb.OpenRecordset("T_社員")でテーブルを開いています。
実務ではかなり頻繁に使うコードです。
実務でよく使う場面
- CSV出力
- データチェック
- 一括更新
- 集計処理
CurrentDb.Executeの使い方
CurrentDbは、SQL実行でもよく使います。
特に実務で頻繁に使うのが、CurrentDb.Executeです。
データ追加サンプル
Dim sql As String
sql = "INSERT INTO T_社員 (社員名) " & _
"VALUES ('田中')"
CurrentDb.Execute sqlこのコードの目的
社員テーブルへ新しいデータを追加しています。
Executeとは?
Executeは、 SQLを実行するためのメソッドです。
実務では、 次のような処理でよく使います。
- INSERT
- UPDATE
- DELETE

DoCmd.RunSQLとの違い
初心者だと、DoCmd.RunSQLとの違いが気になることがあります。
実務では、CurrentDb.Executeのほうが使われることが多いです。
理由
- 警告メッセージが出ない
- 高速
- エラー処理しやすい
CurrentDbを使うときの注意点
CurrentDbは便利ですが、初心者がハマりやすいポイントもあります。
DAO参照設定エラー
環境によっては、DAO.Recordsetでエラーになることがあります。
その場合は、 次の項目を確認してください。
- VBEを開く
- ツール
- 参照設定
- Microsoft DAO をチェック
Closeし忘れに注意
レコードセットを使った場合は、
rs.Close
Set rs = Nothing
を最後に書きましょう。実務では非常に重要です。
SQLエラー対策も必要
Executeを使う場合は、 次の対策も必要です。
- シングルクォート対策
- Null対策
- 入力チェック
実務では、Replace()やNz()などをよく使います。

実務での使い方とまとめ
CurrentDbは、現在のAccessファイルを操作するための基本機能です。
実務では、 次のような処理で頻繁に使います。
- テーブル取得
- レコード操作
- SQL実行
- 一括更新
特に重要なのは次の3つです。
- OpenRecordset
- Execute
- Close
まずは小さいサンプルコードを実際に動かしながら、
- テーブル取得
- SQL実行
- レコード処理
を試してみてください。
ここを理解できると、Access VBAでできることがかなり広がります。
コメント