Access VBA入門 | Connection-ConnectionStringプロパティ(ADO データベース接続)

Access VBA入門

公開日:2017年6月10日 更新日:2017年6月25日

Connectionオブジェクトは、ADOのオブジェクトであり、データベースに接続する際に使用します。

ここでは、データベースに接続する方法としてConnectionオブジェクトのConnectionStringプロパティを使用する方法について解説します。

Connection-ConnectionStringプロパティ(ADO データベース接続)【Access VBA入門】
目次

1.基本形

CN.ConnectionString = "Provider=・・・" →データベース接続情報の取得(String型)

変数説明
CNConnectionオブジェクト変数。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」を設定しておく、と覚えておきましょう。