目次
Excel VBA から データベースに接続する方法です。 (Excel から VBA を使わずにデータを取得・表示する方法もあります。 例: Windows, Excel: データベースから直接値を取得して表示する)
環境
- Excel 2016
- Microsoft ActiveX Data Objects 2.8 Library
ADO
まず、データベースに接続するために ADO を設定します。 ADO とは、 ActiveX Data Object の略で、 データベースに接続するための機能の集合体です。 データベースにはいくつか種類がありますが、 ADO は データベースの種類にかかわらず統一的に操作できるよう配慮されていま す。
Visual Basic エディタ の参照設定で、 ADODB を追加しましょう。
Excel の Visual Basic エディタ を開きます。
Visual Basic for Applications のエディタから、 「ツール」→「参照設定」をクリックします。
ダイアログが出るので、 Microsoft ActiveX Data Objects Library の一番新しいものを選択します。 ここでは “2.8” を選択しました。
「OK」をクリックして VBA に戻ると、 ADODB
が使えるようになっているはずです。
接続の基本
データベースに接続するときの基本のコードフォーマットです。
1 2 3 4 5 6 7 8 9 10 |
Sub TestConnection Dim cn As ADODB.Connection Set cn = New ADODB.Connection cn.ConnectionString = "DSN=XXXX;" cn.Open cn.Close Set cn = Nothing End Sub |
cn.Open
のところでデータベースに接続しています。 ここでエラーが出る場合、接続できていません。
接続先のデータベースによって、接続設定を変更する必要があります。
接続設定
ADODB
を使ってデータベースに接続する場合の接続設定を書きましょう。
ODBC を設定している場合
ODBC を設定している場合はとても簡単に接続設定が書けます。 設定方法は “Windows: PostgreSQL の ODBC を設定する” に記載しています。
作成した ODBC 設定 の名前を使って "DSN=odbc_name;"
のように書けば OK です。 Excel内で作成した接続名ではなく、 ODBCの接続名です。
1 |
cn.ConnectionString = "DSN=odbc_name;" |
直接接続設定を書く
すべてを ConnectionString
の中に書きます。 ここに ConnectionString
のサンプルを掲載します。 さらに詳しいことは MSDN などを参考にしてください。
- PostgreSQL
-
12Driver={PostgreSQL};Server=hosts;Port=5432;Database=db_name;Uid=user_name;Pwd=password;
- MySQL
-
1DRIVER={MySQL ODBC 5.3 Driver};SERVER=host;DATABASE=db_name;USER=user_name;PASSWORD=password;OPTION=3;