§ ExcelVBAでAccessデータを操作する(3) 〜 ADO編 〜
前回(1)と(2)で、DAOを使用しての操作を行いましたので、今回はADOを使用してAccessファイルを操作する
方法を少しお話します。私自身は、DAOの方が使い易いと思っていますが、ADOはASP等で利用できるといった
メリットもありますので、わかる範囲で進めさせて頂きます。
◎ ADO(ActiveX Data Objects)の基本(1) < 接続について >
ADOはDAO(Data Access Objects)と同じくMicrosoftOfficeのアプリケーションからDataBaseファイルとを接続し、 操作するオブジェクトです。そういう意味で、DAOとADOは兄弟みたいなものかも知れません。
一番最初にしなければならない事は、ADOを呼び出すということです。
ExcelのMenuBarより、[ツール(T)]→[マクロ(M)]→[Visual Basic Editor(V)]を選択します。画面がVBEに変わったら、
[ツール(T)]→[参照設定(R)]を選択。すると、参照設定用のダイアログボックスが表示されます。ここで、「Microsoft ActiveX
Data Objects *.*Library」にチェックを入れて、[OK]ボタンを押します。
(注)"*.*"のところは、ADOのバージョンです。皆さんのOfficeのバージョンによって異なります。
↓
まず、その基本となるADOでのデータベースへの接続について、下記にコード例を示します。
このプログラムは、C:¥My Documents¥DBSamp.mdbと接続した時のものです。DAOより少し難しい感じがします。
下にDAOにおけるDataBaseとの接続例を示します。
と、 こんな感じになると思います。
で、あえて難しいことはいいませんが、ADOで憶えて頂きたいことは、接続時の設定で、「何を使って、どこに接続するか?」
ということです。
皆さんが家庭でインターネットを行うとき、何柄のプロバイダと契約されると思います。 それと同じように、ADOと接続する時は、 OLE DBプロバイダとそのつど契約しなければなりません。それが、何を使っての意味です。“Provider=Microsoft.Jet.OLEDB.4.
0;”のところが、その言い回しとなります。これが例えば、Excel97を使用される場合は“Provider=Microsoft.Jet.OLEDB.3.5.1;” となりますし、SQL
Serverと接続される場合は“Provider=SQLOLEDB”となります。このように、使用されるプロバイダによって 言い回しが異なってきますので注意して下さい。また、どこに接続するかは“DataSource=フルパス(FullPath);”が原則になってい ますが、DBファイルがExcelファイルと同一フォルダ内にある時は、抽象的の表現「& ThisWorkbook.Path &」が使用できます。
<< 代表的プロバイダ例 >>
Microsoft.Jet.OLEDB4.0 = Excel2000以降
Microsoft.Jet.OLEDB3.5.1 = Excel97
MSDAORA = Oracleデータベース
MSDASQL = ODBC接続
◎ ADO(ActiveX Data Objects)の基本(2) < .mdbの生成について >
ここでは、ADOを使ってAccessファイルを生成してみましょう。
とはいったものの、大変申し訳けないのですが ・ ・ ・ ・
ADOでAccessファイルは生成されません!!
? ? ?
と、思われた方も多いと思いますが、実際の問題としてADOではいくらソース(プログラム)を書いてもエラーとなります。
で、ここではADOX( Microsoft ActiveX Data Objects Extensions for Data
Definition Language and Security )を使います。
VBEの画面より、[ツール(T)]→[参照設定(R)]を選択。参照設定用のダイアログボックスが表示されたら、「Microsoft ADO Ext.
*.* for DDL and Security」にチェックを入れて、[OK]ボタンを押します。
これで、Accessファイルを生成することできます ! !
[[< 注 >ADOは、既存のデータベースを操作することはできますが、データベース自体やテーブルを新規に生成することは
できません。そのために、ADOXがADOの拡張機能として作られたみたいです。まあ、私自身は、ADOとADOXを含
めて広義のADOだと思っています。]]
それでは、ADO(ADOX)でのデータベースの生成について、下記にコード例を示します。
データベースを生成させる場合の注意点は、接続する時と同じく、「 何を使って、どこに作るのか? 」ということです。
そして、この作業を変数に代入し( 4 )、CatalogオブジェクトのCreateメソッドでmdbファイルを生成します( 5 )。
「 Catalogとは何者だ?
」と思われた方もいると思いますが、私もハッキリ分かりましぇ〜ん!!
まあ、これがなければデータベースは生成しないと思ってください( 詳細は、ADO・ADOXのヘルプで )。
しかし、生成させるだけではあきまへんなぁ!!
そう、テーブルがいりまっせ ・ ・ ・ ・ ・
それでは、ADO(ADOX)でのデーブルの作成について、下記にコード例を示します。
と、まあ、こんな案配となります。
“テーブルの作成”の大まかな流れは、以下のようになります。
(1)
変数の配列宣言
(2)
接続情報の作成
(3)
テーブルオブジェクトの作成
(4)
フィールド情報の作成とテーブルオブジェクトへの追加
(5)
テーブルオブジェクトをCatalogオブジェクトに追加
最後に、ADOでのデータ型についてはヘルプ等で確認して頂きたのですが、少し紹介します。
(1)
adInteger : 整数型(4バイト)
(2)
adCurrency : 通貨型
(3)
adDate : 日付型
(4)
adBoolen : ブール型
(5)
adChar : テキスト型(文字長も表記する)
が、あります。
次回はADOの応用編として、ExcelよりAccessへのデータの送信とAccessからExcelへのデータの送信を
少しお話します。
ExcelVBAでAccessデータを操作する(1) 〜 DAO基礎編 〜
ExcelVBAでAccessデータを操作する(2) 〜 DAO応用編 〜
ExcelVBAでAccessデータを操作する(2) 〜 ADO応用編 〜
ExcelVBAでWord(.doc)ファイルを操作する(1) 〜 むかしなつかしDDE編 〜