定義情報(スキーマ情報)を調べる
Sub スキーマ情報取得()
Dim myCon As New ADODB.Connection, myRS As New ADODB.Recordset, mySrc As String
Dim i As Integer
'接続先のExcelファイル
mySrc = ThisWorkbook.Path & "\xls\DataBook.xls"
'接続
With myCon
.Provider = "Microsoft.Jet.OLEDB.4.0;"
.Properties("Extended Properties") = "Excel 8.0;"
.Open mySrc
End With
'テーブル情報(TABLES 行セット)を取得
Set myRS = myCon.OpenSchema(adSchemaTables)
'フィールド名を書き出し
For i = 1 To myRS.Fields.Count
Cells(1, i) = myRS.Fields(i - 1).Name
Next
'取得した情報を転記
Range("A2").CopyFromRecordset myRS
myRS.Close: Set myRS = Nothing
myCon.Close: Set myCon = Nothing
End Sub
スキーマ情報を得るにはConnectionオブジェクトのOpenSchemaメソッドにどのようなスキーマ情報を取得したいのかSchemaEnum列挙型の定数で指定する。
OpenSchemaメソッドを実行すると、スキーマ情報の結果セットを返すので、それをRecordsetオブジェクトで受け取って、検索・転記などの処理を行う。
OpenSchemaメソッドでスキーマ情報を得る。 (テーブルに関する情報)
Set myRS = myCon.OpenSchema(adSchemaTables)
| 定数 | 値 | 説明 | 制約列 |
|---|---|---|---|
| adSchemaTables | 20 | テーブル、ビュー情報を取得 (TABLES 行セット) |
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME TABLE_TYPE |
| adSchemaColumns | 4 | フィールド情報を取得 (COLUMNS 行セット) |
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME COLUMN_NAME |
| adSchemaPrimaryKeys | 28 | 各テーブルの主キー情報を取得 (PRIMARY_KEYS 行セット) |
PK_TABLE_CATALOG PK_TABLE_SCHEMA PK_TABLE_NAME |
| adSchemaProcedures | 16 | クエリ、ストアドプロシージャ情報を取得 (PROCEDURES 行セット) |
PROCEDURE_CATALOG PROCEDURE_SCHEMA PROCEDURE_NAME PROCEDURE_TYPE |
実行結果

