定義情報(スキーマ情報)を調べる
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 |
実行結果