§ 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ファイルを生成してみましょう。

とはいったものの、大変申し訳けないのですが ・ ・ ・ ・

ADOAccessファイルは生成されません!! 

? ? ?

と、思われた方も多いと思いますが、実際の問題としてADOではいくらソース(プログラム)を書いてもエラーとなります。

で、ここではADOXMicrosoft ActiveX Data Objects Extensions for Data Definition Language and Security )を使います。

  VBEの画面より、[ツール(T)]→[参照設定(R)]を選択。参照設定用のダイアログボックスが表示されたら、「Microsoft ADO Ext. 
*.* for DDL and Security
」にチェックを入れて、[OK]ボタンを押します。

  これで、Accessファイルを生成することできます ! !

  [[< 注 >ADOは、既存のデータベースを操作することはできますが、データベース自体やテーブルを新規に生成することは      

      できません。そのために、ADOXADOの拡張機能として作られたみたいです。まあ、私自身は、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編 〜 

ExcelVBAでテキストファイルデータを操作する 〜 シーケンシャルデータの処理 〜

メニューに戻る