ODBCドライバ経由でAccessのデータベースに接続する際にODBCデータソースを作成せずにVBAのプログラム中のODBC接続文字列に直接指定して接続するサンプルプログラムを覚書。
通常ODBCドライバ経由でデータベースに接続する場合、[コントロールパネル] > [管理ツール] > [データソース(ODBC)]でデータソースを作成しそれをプログラム中で指定して接続しますが、紹介する方法であればデータソースの作成が必要なくなります。
ODBCデータソースレス接続方法
ODBCデータソースレス接続する際の接続文字列は以下のとおりです。
Driver={ドライバ名};DBQ=デーベースファイルへのフルパス;UID=admin;
上記の{ドライバ名}にAccessのODBCドライバ名を指定します。
ODBCドライバのドライバ名の確認
接続文字列の{ドライバ名}に指定するODBCドライバ名は以下の2つの方法で確認することができます。
レジストリで確認する方法
レジストリエディタを起動して"HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI"のキーを参照します。
キー名称が各ODBCドライバの名前になります。
[ODBC データソース アドミニストレータ] ダイアログボックスから確認する方法
[ODBC データソース アドミニストレータ] ダイアログボックスの[ドライバ]タブの[名前]一覧に表示されている名前が各ODBCドライバの名前になります。
上記の何れかの方法で確認するとAccessのODBCドライバ名は、
"Microsoft Access Driver (*.mdb)"
であることがわかります。
ODBCデータソースレス接続文字列の例
例えば、"C:\Program Files\Microsoft Office\Office\Samples\Northwind.mdb"にODBCデータソースレス接続する場合の接続文字列は以下のようになります。
Driver={Microsoft Access Driver (*.mdb)};DBQ=C:¥Program Files¥Microsoft Office¥Office¥Samples¥Northwind.mdb;UID=admin;
ODBCデータソースレス接続を使用したVBAのサンプルプログラム
Access VBAでODBCデータソースレス接続を使用したサンプルプログラムを紹介します。
以下のサンプルプログラムは、サンプルデータベース"Northwind"に接続して"社員"テーブルの"氏名"フィールドの内容をイミディエイトウィンドウに表示するサンプルプログラムです。
Sub procTest()
Dim Con As New ADODB.Connection, Rec As New ADODB.Recordset
Con.ConnectionString = "Driver={Microsoft Access Driver (*.mdb)};DBQ=C:¥Program Files¥Microsoft Office¥Office¥Samples¥Northwind.mdb;UID=admin;"
Con.Open
Rec.Open "社員", Con
Do Until Rec.EOF
Debug.Print Rec("氏名")
Rec.MoveNext
Loop
End Sub
ODBCデータソースレス接続のまとめ
ODBCデータソースレス接続は他のPCで動作させる際に端末ごとにデータソースを作成する必要がないため、非常に便利です。
もちろんODBCドライバがインストール済みであることが前提です。
ODBCデータソースレス接続はAccessのVBAだけでなく、ExcelのVBAやVBでも使用できます。
使用するODBCドライバによって接続文字列の記述方法が若干異なりますが、基本的にはどのODBCドライバ接続でもデータソースレス接続が可能です。
コメント