新規テーブルを作成する
Sub 新規テーブル作成() Dim myCat As New ADOX.Catalog, myTbl As ADOX.Table, myIdx As ADOX.Index Dim conStr As String, DBName As String '接続するデータベースと接続文字列 DBName = ThisWorkbook.Path & "\mdb\newDB.mdb" conStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & DBName '操作対象となるmdbファイルを指定 myCat.ActiveConnection = conStr '新規テーブルオブジェクトを作成し、テーブル名を指定 Set myTbl = New ADOX.Table myTbl.Name = "商品マスタ" 'フィールドを追加 With myTbl.Columns .Append "商品ID", adSmallInt .Append "商品名", adVarWChar, 20 .Append "単価", adCurrency End With '新規インデックスオブジェクトを作成 Set myIdx = New ADOX.Index 'インデックス情報の指定 With myIdx .Name = "主キー" .Columns.Append "商品ID" .PrimaryKey = True End With 'Tableオブジェクトにインデックス情報を追加 myTbl.Indexes.Append myIdx 'CatalogオブジェクトにTableオブジェクトを追加 myCat.Tables.Append myTbl Set myIdx = Nothing Set myTbl = Nothing Set myCat = Nothing End Sub
テーブルを新規作成するには、Catalogオブジェクト内のTableコレクションにAppendメソッドを使用する。
新規テーブルを作成する手順
- 新規Tableオブジェクトの作成
- フィールド情報をTableオブジェクトに追加
- インデックスや主キーの情報をTableオブジェクトに追加
- 作成したTableオブジェクトを、Appendメソッドを使用して、CatalogオブジェクトのTablesコレクションに追加
-
新規Tableオブジェクトの作成
New キーワードを使用して新規Tableオブジェクトを作成後、TableオブジェクトのNameプロパティを使用して「テーブル名」を指定'新規テーブルオブジェクトを作成し、テーブル名を指定 Set myTbl = New ADOX.Table myTbl.Name = "商品マスタ"
-
フィールド情報をTableオブジェクトに追加
Columnsコレクションに対してAppendメソッドを使用するColumnsオブジェクト.Append Column , Type , DefinedSize
引数 説明 Column フィールド名を指定。
または、すでに各種フィールド情報を設定済みのColumnオブジェクトを指定Type フィールドのデータ型を指定。省略可能。
ADO列挙定数DataTypeEnum で指定する。DefinedSize フィールドの列のサイズを指定。省略可能 'フィールドを追加 With myTbl.Columns .Append "商品ID", adSmallInt .Append "商品名", adVarWChar, 20 .Append "単価", adCurrency End With
-
インデックスや主キーの情報をTableオブジェクトに追加
Indexオブジェクトを作成し、必要な項目を設定後、TableオブジェクトのIndexesコレクショにAppendメソッドを使用して追加する
新規作成したIndexオブジェクトには、Nameプロパティに任意の名前をつけ、主キーとしたい場合にはPrimaryKeyプロパティに「True」を指定する
さらに、Indexオブジェクト内のColumnsコレクションのAppendメソッドを、引数としてインデックス化したいフィールド名を渡して実行する'新規インデックスオブジェクトを作成 Set myIdx = New ADOX.Index 'インデックス情報の指定 With myIdx .Name = "主キー" .Columns.Append "商品ID" .PrimaryKey = True End With 'Tableオブジェクトにインデックス情報を追加 myTbl.Indexes.Append myIdx
-
作成したTableオブジェクトを、Appendメソッドを使用して、CatalogオブジェクトのTablesコレクションに追加
'CatalogオブジェクトにTableオブジェクトを追加 myCat.Tables.Append myTbl
実行前のデータベース
実行結果
同名テーブルを作成しようとした時のエラーメッセージ