Access形式のデータベース(.accdb
)に対して、Excel VBAから直接接続して操作するには、DAO(Data Access Objects)を使用するのが一般的です。
この方法により、VBAでAccess内のテーブルやクエリを参照したり、データを書き込んだりする準備が整います。
この記事では、DAOを使ってAccessのデータベースに接続する基本的なVBAコードをご紹介します。
目次
前提条件
- 接続対象は「project_data.accdb」というAccessファイル
- Excelファイルと同じフォルダ内にこのデータベースファイルが配置されている
- DAO 12.0(
DAO.DBEngine.120
)がインストールされている環境であること
VBAコード:Accessデータベースへの接続とバージョン確認
Sub ConnectToAccessDB()
Dim daoEngine As Object
Dim accessDB As Object
' DAO バージョンの確認
MsgBox CreateObject("DAO.DBEngine.120").Version, vbInformation, "DAO Version"
' エンジンとデータベースの初期化
Set daoEngine = CreateObject("DAO.DBEngine.120")
Set accessDB = daoEngine.OpenDatabase(ThisWorkbook.Path & "\project_data.accdb")
' 接続確認メッセージ
MsgBox accessDB.Name & " に接続しました", vbInformation, "接続成功"
' 後始末
accessDB.Close
Set accessDB = Nothing
Set daoEngine = Nothing
End Sub
実行結果(例)
- 最初のメッセージボックスで DAO バージョン(例:
12.0
)が表示されます。 - 次に「C:\Users…\project_data.accdb に接続しました」と表示されれば成功です。
補足情報
項目 | 内容 |
---|---|
CreateObject("DAO.DBEngine.120") | DAO エンジンのバージョン 12.0 を指定 |
.OpenDatabase(...) | 指定したパスにある .accdb を開く |
MsgBox | 接続確認のための通知用メッセージ表示 |
よくあるエラーと対策
エラー内容 | 対応方法 |
---|---|
コンパイルエラー「ライブラリが見つかりません」 | 参照設定が古い DAO バージョンになっている可能性 |
実行時エラー「ファイルが見つかりません」 | ThisWorkbook.Path にファイルが存在するか確認 |
バージョンが表示されない | DAO ランタイムが未インストールまたは破損 |
まとめ
Excel VBAからAccessデータベースに接続するには、DAOオブジェクトを使う方法がシンプルで確実です。
データの読み書きやクエリ実行など、今後の操作に備えてまずはこの接続処理をしっかり押さえておくことが重要です。
次回はこの接続を利用して、Accessのテーブルからデータを抽出・加工する方法をご紹介します。