VBAオジサンのらくがき帳

ADOの接続文字列について

2021-08-01 00:00:00

ExcelのVBAからADOを利用してDBのデータにアクセスする際に使う接続文字列について、いろいろなパターンがあるのでまとめてみました。

ODBCデータソースを設定して使う

ODBCデータソースアドミニストレーターを使ってユーザーDSNやシステムDSNを設定して利用する方法です。64bitと32bitがあるので、Excelのバージョンに合わせて選んでください。登録されたDSNの名前を接続文字列に指定します。会社の共有DBなどのシステムDSNが登録されている場合はこの方法が便利だと思います。

Set conn = CreateObject("ADODB.Connection")
conn.ConnectionString = "DSN=MyDB;UID=******;PWD=******"

ファイルDSNを使う

ODBCデータソースアドミニストレーターからドライバを指定して作成することもできますが、ただのテキストファイルなのでメモ帳などで編集もできます。接続文字列にファイル名を指定します。ファイルなので簡単に設定を共有できるのがいいところだと思います。

conn.ConnectionString = "FileDSN=C:\workarea\MyDb2.dsn;UID=****;PWD=****;DB=mydb"

ODBCドライバーを指定する

事前に登録をせずに、直接ドライバーとホスト名などを接続文字列に指定して使用することもできます。ドライバー名は下の画面で確認することができます。

conn.ConnectionString = "DRIVER={MariaDB ODBC 3.1 Driver};SERVER=192.168.**.**;PORT= 3306;UID=*****;PWD=*****;DB=mydb"

ODBC接続に指定できるパラメータ

UID、PWD以外のパラメータは接続先のDBによって違います。(各社のページにリンクを貼っています)

MS Access DBQ=[ファイルパス]
Oracle DBQ=[TNSサービス名]
SQL Server Server=[サーバ名,ポート];Database=[データベース]
Sybase Server=[サーバ名];Port=[ポート];Database=[データベース]

OLEプロバイダを指定する

OLEプロバイダが用意されている場合は、プロバイダを利用した接続文字列も使えます。ODBCとは同じパラメータでも名前が違う場合があります。あまり使ったことないので参考程度で。

MS Access Provider=Microsoft.ACE.OLEDB.16.0;Data Source=[MDBファイル名];
Oracle Provider=MSOLEDBSQL;Server=[サーバ名,ポート];UID=[ユーザID];PWD=[パスワード];
SQL Server Provider=OraOLEDB.Oracle;Data Source=[TNSサービス名];User Id=[ユーザID];Password=[パスワード];