Access VBA入門 | ADOオブジェクトモデル(概要)

Access VBA入門

公開日:2017年6月8日 更新日:2017年6月9日

ADOオブジェクトモデルは、Windows開発のうち、データアクセスに属したオブジェクトモデルです。

ここでは、ADOオブジェクトモデルの概要について解説します。

1.ADOの位置付け

上記に記載した通り、Windows開発のうち、データアクセスに属するオブジェクトモデルです(「MSDN ライブラリ」では、Windows開発→Windows2000→データアクセスとリンクを辿るとADOのページが見つかります)。

データアクセスの項目には同列の扱いとして、OLE DBが存在します。OLE DBは、ADOにてデータベースに接続する際に使用します。

Access VBA ADO

2.使用目的

ADOオブジェクトモデルは、データベースへのアクセスやデータを操作する場合に使用します。

3.使い方

3-1.参照設定

上述の通り、ADOオブジェクトモデルは、VBAの枠外に存在するためそのままではVBA上で使用することができません。

使用するには「参照設定」を行います。

VBE上のメニューより「ツール→参照設定」を選択。
一覧から「Microsoft ActiveX Date Objects X.X Library」にチェックを入れてOKボタンを押します(X.Xの部分は最新のものを選択)。

3-2.事前バインディング

参照設定を行った場合には、事前バインディングによる方法で、ADOオブジェクトの変数宣言と初期化を行うことができます。

'事前バインディングによる方法

Dim ADO As ADODB.ADOオブジェクト   '(1)
'変数ADOは例示。自由に設定してください。

Set ADO = New ADODB.ADOオブジェクト  '(2)

上記コードのうち、「ADOオブジェクト」には、後述「4.ADOオブジェクトモデルを構成するオブジェクト」で説明する各オブジェクト名が入ります。

(1)Dim ADO As ADODB.ADOオブジェクト
→ADOのうち、「ADOオブジェクト」に指定したオブジェクトを変数として使用するための宣言になります。

(2)Set ADO = New ADODB.ADOオブジェクト
→(1)で宣言した変数CNを初期化しています。

ADOというVBAの枠外にある設計書を、VBAプログラム内で利用するために記述します。(1)(2)を併せてインスタンス化(実体化)といいます。

(1)(2)は次のように1行で表すこともできます。

'事前バインディングによる方法
Dim ADO As New ADODB.ADOオブジェクト

'変数ADOは例示。自由に設定してください。

なお、ADOがVBA上で使用される際には、ADOオブジェクトに属するオブジェクトは、まとめてADODBライブラリと呼ばれます。そこで、変数宣言時には、ADOを使用することが分るように「ADODB.」をADOオブジェクトの前に記述します。

【参考】実行時バインディングによるADOの使用

実行時バインディングによる方法によれば、事前バインディングのように参照設定を行わずともADOを使用することができます。ただし、事前バインディングと比較して、動作は遅くなります。また、私のPC環境下では、コードの予測入力ができなくなる、引数を設定できないなど、不便と感じることが発生しました。従って、できる限り事前バインディングを使用することをお勧めします。

'実行時バインディングによる方法

Dim ADO As Object  'Object型で変数を宣言
'変数ADOは例示。自由に設定してください。

Set ADO = CreateObject("ADODB.ADOオブジェクト") 
'CreateObject("ADODB.-")の部分がポイント

4.ADOオブジェクトモデルを構成するオブジェクト

ADOオブジェクトモデルは次のオブジェクトで構成されています(MSDN ライブラリより引用)。

オブジェクト名説明
Commandデータ ソースに対して実行する、特定のコマンドの定義です。
Connectionデータ ソースへの接続を表します。
Errorプロバイダを含む単一の操作に関連して発生した、データ アクセス エラーの詳細情報を格納しています。
Field共通のデータ型を持つデータの列を表します。
Parameterパラメータ クエリまたはストアド プロシージャに基づく、Command オブジェクトに関連付けられたパラメータまたは引数を表します。
Propertyプロバイダで定義される ADO オブジェクトの動的特性を表します。
RecordRecordset の行、またはファイル システム内のディレクトリやファイルを表します。
Recordsetベース テーブルのレコード セット全体、またはコマンドの実行によって返された結果を表します。Recordset オブジェクトでは、常にレコードセット内の 1 つのレコードのみをカレント レコードとして参照します。
Streamデータのバイナリまたはテキスト ストリームを表します。

各オブジェクトのメソッド、プロパティや、その使い方については、各ページで解説しています。