YENLAND TIME :  

 Top >  Library  |  印刷する印刷ページ       はてなブックマークに追加 このページを Google Bookmarks に追加 RSS

大区分

その他

中区分

PC

小区分

データベース

項目

2. エクセルから他のDBへの接続方法

入力者 山下章太 更新日 20071014

エクセルから他のデータベースに接続することによって、いろんなアプリケーションを利用した操作が可能になります。 ここでは、エクセルから他のDBへの接続方法について記載します。

まず初めに

他のデータベースに接続する際の、大まかな手順は以下のとおりです。

1. データベースへ接続する
2. レコードセットを作成する
3. DBからデータを取得する
4. データベースへの接続を切断する
5. レコードセットを初期化する

では、この流れに従って解説していきます。

1. データベースへ接続する

データベースに接続する場合には、まず接続するための、 ”ADODB.Connection”というものを作成しなければなりません。接続情報を入れるための変数です。

設定方法は2つありますが、この違いは参照設定を利用するかどうかです。 参照設定を利用してしまうと、DAOやADOのバージョンが違う場合エラーが出る可能性がありますので、 あまりおすすめしません。

下記の方法は、参照設定を利用せずに”ADODB.Connection”を作成しています。

・Connectionの作成

Set con = CreateObject("ADODB.Connection")

ちょっと解説しますと、"con"という接続を設定(Set)していますが、 これを"ADODB.Connection"というオブジェクトを作る(CreateObject)ということでやっているのです。
ちなみに、参照設定を利用する場合は、

=New ADODB.Connection
とします。

次に接続するデータベースを設定しますが、ポイントは以下の通りです。

データベース接続のための文字列設定のポイント

  • Provider:
    何に接続するかを指定します。
    MS Accessは”Microsoft.Jet.OLEDB.××”などそれぞれの種類によって 指定の仕方が違いますが、以下では2種類の方法を例に挙げています。
  • Data Souce :
    接続するデータソースの名前です。
    MS Access の場合は、DBのパス。 ODBCの場合は、DSN(Data Source Name)を入れます。
  • UseeID・Password :
    これらを設定している場合は必要になります。

サンプルを幾つか記載します。ここでは、"constr"という変数に接続情報を代入しています。

サンプル1: ODBCでの接続

ユーザーID、パスワード、データソースなどを以下のように設定しています。
Provider = MSDASQL.1
ユーザーID = yenbridge
パスワード = yenbridge
DSN = DB
Mode = 読み取り

constr ="Provider=MSDASQL.1;Password=yenbridge;PersistSecurityInfo=True;UserID=yenbridge;Data Source=DB;Mode=Read"

サンプル2: MS Access に接続する場合

ユーザーID、パスワードは無いものとして、データソースを設定しています。
Provider = Microsoft.Jet.OLEDB.4.0 (MS Access2000を使用しています)
ユーザーID = なし
パスワード = なし
DSN = C:\Access\sample.mdb (アクセスのファイルの場所)

constr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Access\sample.mdb;Persist Security Info=False"

・データベースへの接続

先ほど作成した、Connectionを”constr”で開くという意味です。 ”constr”の中身は、上に記載した内容です。

con.Open constr

・使用例

ここまでのおさらいです。
Cドライブの”Access”フォルダの中に、”sample.mdb”というAccessファイルがあり、それに接続する場合を想定しています。

sub sample()
Dim constr as String '接続文字列の定義

'Connectionの設定
Set con = CreateObject("ADODB.Connection")

'接続文字列の作成
constr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Access\sample.mdb"

'DBへの接続
con.Open constr

end sub

2. レコードセットの作成

これも、参照設定を利用するかどうかで少し違ってきますが、以下では参照設定を利用しない方法を利用しています。

Set rs1 = CreateObject("ADODB.Recordset")

これだけです。結構簡単です。
"rs1"というレコードセットを設定(set)しているのですが、 これをVisual Basicでは、"ADODB.Recordset"というオブジェクトを作る(CreateObject)と書きます。

3. データの取得

通常データベースを利用する際には、直接テーブル参照してレコードの検索をするには、データ量が多すぎるため、 SQLで必要なレコードのみを抽出します。
SQLの使い方については、こちらをご覧下さい。

SQLを仮に以下のように設定すると、

sql1= "SELECT 名簿.No, 名簿.名前, 名簿.出身地 FROM 名簿"

SQLを実行してデータベースからデータを取得するには

rs1.Open sql1, con

です。これだけです。
この場合は、SELECT句でクエリを開いているというイメージです。

実際に、更新(UPDATE)や挿入(INSERT)する場合には、

Con1.Execute Sql1

というように、SQLを"Con1"で実行する(Execute)ということになります。

4. データベースへの接続を切断する

これはもっと簡単です。

Con1.Close
"Con1"という接続を切断(Close)しています。

ちなみに、既に作成した"Con1"というオブジェクトを初期化するのは、次のようにします。

Set Con1 = Nothing

5. レコードセットを初期化する

これは、先ほどの"Con1"の初期化と同じです。

Set rs1 = Nothing

復習

最後に、ここまでご説明したことを復習してみましょう。

sub sample()

Dim constr as String '接続文字列の定義

'Connectionの設定
Set con = CreateObject("ADODB.Connection")
constr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Access\sample.mdb"

'DB接続
con.Open constr

'RecordSetの作成
Set rs1 = CreateObject("ADODB.Recordset")

'SQL
sql1= "SELECT 名簿.No, 名簿.名前, 名簿.出身地 FROM 名簿"

'SQLを実行して対象をRecordSetに入れる
rs1.Open sql1, con

'Serverへの接続を切断
Con1.Close: Set Con1 = Nothing

'Record setの初期化
Set rs1 = Nothing

end sub



   はてなブックマークに追加 このページを Google Bookmarks に追加 RSS