教えて!ExcelVBA!

ExcelVBAの基礎知識・書き方について紹介します。

【ExcelVBA 外部アプリケーション連携】ExcelVBAからAccessに接続→データ操作(取得・追加・更新・削除)→切断する方法を教えて!

ExcelVBAを使用してAccessデータベースに接続し、データを操作する方法について解説します。

DAOについて

DAO(Data Access Objects)は、Accessデータベースへの接続やデータ操作を行うためのオブジェクトライブラリです。VBAでAccessデータベースを操作する場合、DAOを使用することが一般的です。DAOを使用することで、データベースのテーブルやクエリに対してクエリを実行したり、データの追加・更新・削除を行ったりすることができます。

Accessデータベースに接続する方法

Accessデータベースに接続するには、DAOオブジェクトを使用します。以下の構文を使用して、接続を行います。

構文

Dim db As DAO.Database
Set db = OpenDatabase("データベースのパス")

使い方

まず、DAO.Databaseオブジェクトを宣言し、OpenDatabaseメソッドを使用してデータベースに接続します。データベースのパスは、接続したいAccessデータベースのファイルパスを指定します。

プログラミング例

以下の例では、"C:\Database.accdb"というパスのAccessデータベースに接続しています。

Dim db As DAO.Database
Set db = OpenDatabase("C:\Database.accdb")

Accessデータベースからデータを取得する方法

Accessデータベースからデータを取得するには、Recordsetオブジェクトを使用します。以下の構文を使用して、データを取得します。

構文

Dim rs As DAO.Recordset
Set rs = db.OpenRecordset("テーブル名")

使い方

まず、DAO.Recordsetオブジェクトを宣言し、OpenRecordsetメソッドを使用してテーブル名を指定します。テーブル名には、取得したいデータが格納されているテーブルの名前を指定します。

プログラミング例

以下の例では、接続したデータベースから"Customers"というテーブルのデータを取得しています。

Dim rs As DAO.Recordset
Set rs = db.OpenRecordset("Customers")

Accessデータベースへのデータの追加・更新・削除方法

Accessデータベースへのデータの追加、更新、削除を行うには、Recordsetオブジェクトと各種のメソッドを使用します。以下に代表的なメソッドを示します。

・データの追加:AddNew、Update、Close
・データの更新:Edit、Update、Close
・データの削除:Delete、Close

使い方

まず、Recordsetオブジェクトを宣言し、AddNewメソッドを使用して新しいレコードを追加します。データを更新する場合はEditメソッドを使用し、削除する場合はDeleteメソッドを使用します。最後にUpdateメソッドで変更を保存し、Closeメソッドでレコードセットを閉じます。

プログラミング例

以下の例では、接続したデータベースの"Customers"テーブルに新しい顧客データを追加しています。

Dim rs As DAO.Recordset
Set rs = db.OpenRecordset("Customers")
rs.AddNew
rs("CustomerName").Value = "John Smith"
rs("Email").Value = "john.smith@example.com"
rs.Update
rs.Close

Accessデータベースからの切断方法

Accessデータベースとの接続を終了するには、Closeメソッドを使用します。以下の構文を使用して、切断します。

構文

db.Close
Set db = Nothing

使い方

データベースの操作が終了したら、Closeメソッドを使用して接続を終了し、Set文を使用してオブジェクトを解放します。

プログラミング例

以下の例では、接続を終了している様子を示しています。

db.Close
Set db = Nothing

まとめ

ExcelVBAでAccessデータベースに接続し、データの操作を行う方法について解説しました。DAOを使用してデータベースに接続し、Recordsetオブジェクトを使用してデータの取得や追加・更新・削除を行うことができます。データベースとの接続が終了したら、CloseメソッドとSet文を使用して接続を切断し、オブジェクトを解放することが重要です。ExcelVBAとAccessデータベースの組み合わせは、データの操作や処理を効率化するための強力なツールです。ぜひ積極的に活用して、データベース関連の作業を効率化してください。