6.2 CreateObjectを使う方法
ADOはExcel VBA(エクセルマクロ)やワードマクロなど、Access以外のアプリケーションでも使うことが出来ます。もちろん、SQL ServerやORACELなどのデータベースを扱うことも可能です。

Excel VBAなどでADOを使う方法は2つありますが、ここでは参照設定を行わずに、CreateObjectを使ってADODB.Connection型やADODB.Recordset型の変数を作成し、データベースを扱う方法を紹介します。
CreateObjectを使う場合の変数宣言とオブジェクト作成
まずは変数の型宣言方法です。参照設定を行っていない場合は、変数の型へADODB.Connection型やADODB.Recordset型を指定することができないため、代わりにObjectという型で宣言しておきます。

次の例は、ADOへの参照設定を行った場合の変数宣言と、CreateObjectを使った場合の変数宣言例(Object型を指定)です。

 ■コネクションオブジェクト用変数宣言
  'ADOを参照設定した場合の宣言例
  Dim adoCON As New ADODB.Connection

  'CreateObjectを使う場合宣言例
  Dim adoCON As Object

 ■レコードセットオブジェクト用変数宣言
  'ADOを参照設定した場合の宣言例
  Dim adoRS As New ADODB.Recordset

  'CreateObjectを使う場合宣言例
  Dim adoRS As Object

また、上記のように宣言した変数をADODB.ConnectionオブジェクトやADODB.Recordsetオブジェクトにするには、CreateObjectを使って次のように行います。

 ■コネクションオブジェクトを作成する
  Set adoCON = CrateObject("ADODB.Connection")

 ■レコードセットオブジェクトを作成する
  Set adoRS = CreateObject("ADODB.Recordset")
Excel VBAでADOを使いMDB(Accessデータベース)を読み込む例
次の例は、CreateObjectを使ってコネクションオブジェクトやレコードセットオブジェクトを作成しデータベースを扱う例です。c:\happy\island.mdbというMDB内にある「住所録テーブル」というテーブルをオープン(SELECT文を実行しレコードセットを作成)した後、MoveNextでレコードを最後まで順読みしています。

なお、CreateObjectを使っても使えるプロパティやメソッドは同じです。ADOを使ってデータベースを扱う方法は、3.ADOを使ってMDBへアクセス4.ADOを使って他のDBへアクセスを参照してください。

Sub prcMoveNextADO()

    Dim adoCON As Object
    Dim adoRS  As Object
    Dim lngRow As Long

    'コネクションオブジェクトを作成します
    Set adoCON = CreateObject("ADODB.Connection")

    'レコードセットオブジェクトを作成します
    Set adoRS = CreateObject("ADODB.Recordset")

    'ADOを使いMDBをオープンします
    adoCON.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=c:\happy\island.mdb;"

    'レコードセットの作成(SELECT文の実行)
    Set adoRS = adoCON.Execute("select * from 住所録テーブル")

    lngRow = 1

    '最終レコードまで順読み込みを行う
    Do Until adoRS.EOF = True

       'セルへ各フィールドの値を貼り付けます
       Cells(lngRow, 1) = adoRS("漢字氏名")
       Cells(lngRow, 2) = adoRS("カナ氏名")

       lngRow = lngRow + 1

       'レコードの順読み
       adoRS.MoveNext

    Loop

    'テーブルのクローズ
    adoRS.Close

    'データベースのクローズ
    adoCON.Close

    'オブジェクトの破棄
    Set adoRS = Nothing
    Set adoCON = Nothing

End Sub
 ※これはエクセルマクロ(Excel VBA)です。

ちなみにこの方法では、プログラムをコーディングするときに図のようなメソッドや一覧のプロパティは表示されません

Copyright(C) 1999-2006 結城圭介。 All rights reserved