【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でできることがかなり広がります。

コメント

コメントする

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

CAPTCHA

目次