Access VBA入門 | Connection-ConnectionStringプロパティ(ADO データベース接続)
公開日:2017年6月10日 更新日:2017年6月25日
Connectionオブジェクトは、ADOのオブジェクトであり、データベースに接続する際に使用します。
ここでは、データベースに接続する方法としてConnectionオブジェクトのConnectionStringプロパティを使用する方法について解説します。
1.基本形
CN.ConnectionString = "Provider=・・・" →データベース接続情報の取得(String型)
変数 | 説明 |
---|---|
CN | Connectionオブジェクト変数。Connectionオブジェクトとして宣言して格納した変数です。 |
引数 | 説明 |
---|---|
Provider | 接続先となるプロバイダ名を指定します。 |
その他 | ConnectionStringで用意している引数は、Provider以外にも4つ存在しますが、Providerを使用するケースがほとんどです。これら5つの引数はADO側で処理されます。その他の引数を指定することができますが、ADO側では処理されず、プロバイダ側で用意された引数のため、プロバイダ側での処理になります。 |
データベース接続に必要な情報をString型で取得します。
2.使用例
次の例では、デスクトップ上のAccessファイルであるTest.accdbに接続し、接続状態をメッセージ表示した後に閉じます。
Sub データベースへの接続_Access() Dim CN As New ADODB.Connection '(1) '変数CNは例示。自由に設定してください。 CN.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;" & _ " Data Source=C:\Users\ユーザー名\Desktop\Test.accdb" '(2) 'ユーザー名はあなたのPC環境に合わせて書き換えてください。 CN.Open '(3) MsgBox CN.State '(4) CN.Close '(5) Set CN = Nothing '(6) End Sub
(1)Dim CN As New ADODB.Connection
→ADOのConnectionオブジェクトを使用するためのインスタンスを生成しています。
インスタンス化については「Access VBA入門 | ADOオブジェクトモデル (概要)」で解説しております。ご参考ください。
(2)CN.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;" & _
" Data Source=C:\Users\ユーザー名\Desktop\Test.accdb"
→デスクトップ上のTest.accdbに接続するための情報を取得しています。
このサンプルプログラムでは、ConnectionStringプロパティの引数として、ProviderとData Sourceの2つを設定しています。
【Provider】
プロバイダを指定します。まず、サンプルプログラムでは「Provider=Microsoft.ACE.OLEDB.12.0;」としていますが、これはAccess2007以降(accdbファイル)に接続する場合の文字列です。
次にプロバイダという言葉ですが、ここではデータベースソフトのこと、と覚えておけば差し支えありません。
接続できるデータベースは、Accessだけでなく、SQL ServerやOracleなども接続が可能です。また、ExcelやCsvファイルにも接続することができます。
Microsoft製品は「OLEDB」という文字列を、OracleなどMicrosoft以外の製品は「ODBC」という文字列を、ConnectionStringプロパティの文字列に含めて設定することになります。
ここでは入門ということもあり、Accessの接続例にとどめていますが、それぞれの接続で、ConnectionStringプロパティに設定する引数が異なってきます。また、MySQLやPostgreSQLなどに接続する場合には、ODBCドライバを別途インストールする必要があります。
【Data Source】
接続するデータベースのパスを指定します。相対パスでも絶対パスでも構いません。
【引数の設定方法】
String型(いわゆる文字列)で設定します。従って、「"(引用符)」で文字列を囲む必要があります。また、各引数の間は「;(セミコロン)」で区切ります。従って、最後の引数には「;(セミコロン)」を付す必要はありません。
また、引数設定の文字数が長くなる場合は多いため、 「& _」で連結と改行を行います。「&」で連結する場合には、各文字列は「"(引用符)」で囲む必要があります。
大文字と小文字の区別はありません。サンプルコードの「Provider=Microsoft.ACE.OLEDB.12.0;」を「proViDEr=miCRoSoft.ace.OledB.12.0;」と記述しても動作します。
(3)CN.Open
→(2)で接続情報を設定したデータベースに接続します。
データベースへの接続には、ConnectionオブジェクトのOpenメソッドを使用します。Openメソッドには引数ConnectionString(ConnectionStringプロパティとは別物)が存在しますが、事前にConnectionStringプロパティで接続情報を取得していれば、省略しても情報が上書きされ、ConnectionStringプロパティで設定したデータベースに接続します。
(4)MsgBox CN.State
→データベースの接続状態をメッセージ表示します。
データベースへの接続状態を表示するには、ConnectionオブジェクトのStateプロパティを使用します。今回のプログラムでは、「1」が表示されます。1はデータベースと接続していることを意味します。
(5)CN.close
→接続したデータベースを閉じます。
データベースを閉じるには、ConnectionオブジェクトのCloseメソッドを使用します。
(6)Set CN = Nothing
→変数CNにNothingを代入することで、オブジェクト参照を解除しています。
この記述によって、インスタンス化のために使用していたPCメモリを解放することができます。Connectionオブジェクトの使用を終了する場合には「Set 変数 = Nothing」を設定しておく、と覚えておきましょう。
10冊まで同時に読み放題の電子書籍サービス(200万冊以上が対象)。
PC・ITカテゴリーの対象数は7,000以上。
スキル、ノウハウ吸収や話題作りにと、ライフ・クオリティを高めてくれます。
関連記事
RPAとVBAの比較や今度のトレンドもコメント
VBAエキスパートの難易度
書籍には載っていないことにも言及してコメント
VBAの人気やRPAとの需要争奪戦もコメント
Excel関数のメリットを活かすVBA開発