テーブルの作成・削除/フィールドの作成・削除(ADOX)
2017/10/23
ADOX を使用してテーブル・フィールド(列)を作成・削除
Table オブジェクト
<CreateObject 関数を使用する場合>
Dim tbl As Object
Set tbl = CreateObject(“ADOX.Table”)
<参照設定を行う場合>
Dim tbl As ADOX.Table
Set tbl = New ADOX.Table
参照設定を行うライブラリファイルについて
Microsoft ADO Ext.6.0 for DDL and Security を選択します。ただし、Office 等のバージョンにより、ADOX のバージョンも異なります。参照設定の方法については、ファイルシステムオブジェクト(FileSystemObject)の使い方 を参照してください。
CreatObject 関数 を使用する場合は、参照設定の必要はありませんが、VBE で、自動メンバ表示等のコーディング支援機能が使用できません。また、マクロの実行速度も遅くなります。
Name プロパティ
object.Name
引数・戻り値
- object ・・・ 対象となる Table オブジェクトを指定します。
テーブル名を表す文字列型(String)の値を取得および設定します。
Columns コレクション
object.Columns
<フィールド(列)を作成>
object.Columns.Append Column [, Type, DefineSize ]
<フィールド(列)を削除>
object.Columns.Delete Column
引数・戻り値
- object ・・・ 対象となる Table オブジェクトを指定します。
- Column ・・・ フィールド(列)名を表す文字列型(String)の値を指定します。(省略不可)
- Type ・・・ フィールド(列)のデータ型を以下の定数または値で指定します。(省略可)
定数 値 データ型 adSmallInt 2 整数型 adInteger 3 長整数型 adSingle 4 単精度浮動少数点型 adDouble 5 倍精度浮動少数点型 adCurrency 6 通貨型 adDate 7 日付時刻型 adBoolean 11 ブール型 adGUID 72 オートナンバー型 adVarWChar 202 テキスト型 adLongVarWChar 203 メモ型 - DefineSize ・・・ フィールド(列)のサイズを表す長整数型(Long)の値を指定します。(省略可) ※ Type がテキスト型やメモ型の場合、サイズを指定します。
Tables コレクション
object.Tables
<新規テーブルの作成>
object.Tables.Append Table
<テーブルの削除>
object.Tables.Delete Table
引数・戻り値
- object ・・・ 対象となる Catalog オブジェクトを指定します。
- Table ・・・ 作成または削除するテーブル名を表す文字列型(String)の値を指定します。
ADOX を使用してテーブルを作成する例
サンプルVBAソース その1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
Sub Sample_ADOX_CreateTable1() '参照設定:Microsoft ADO Ext.6.0 for DDL and Security Dim cat As ADOX.Catalog Dim tbl As ADOX.Table Dim ConStr As String Dim DBFile As String On Error GoTo ErrHandler 'データベースのパスと名前 'Access 2007以降(accdb ファイル) DBFile = ActiveWorkbook.Path & "\mydb2.accdb" ConStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & DBFile 'Access 2003以前(mdb ファイル) 'DBFile = ActiveWorkbook.Path & "\mydb2.mdb" 'ConStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & DBFile 'データベース接続 Set cat = New ADOX.Catalog cat.ActiveConnection = ConStr 'テーブルの作成 Set tbl = New ADOX.Table tbl.Name = "Table1" Set tbl.ParentCatalog = cat 'フィールド(列)の設定 tbl.Columns.Append "登録ID", adInteger tbl.Columns.Append "氏名", adVarWChar tbl.Columns.Append "生年月日", adDate tbl.Columns.Append "備考", adLongVarWChar 'テータベースへ登録 cat.Tables.Append tbl ErrHandler: If Err.Number <> 0 Then MsgBox Err.Number & vbCrLf & Err.Description End If Set cat = Nothing Set tbl = Nothing End Sub |
実行結果
サンプルVBAソース その2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
Sub Sample_ADOX_CreateTable2() Dim cat As Object Dim tbl As Object Dim ConStr As String Dim DBFile As String On Error GoTo ErrHandler 'データベースのパスと名前 'Access 2007以降(accdb ファイル) DBFile = ActiveWorkbook.Path & "\mydb2.accdb" ConStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & DBFile 'Access 2003以前(mdb ファイル) 'DBFile = ActiveWorkbook.Path & "\mydb2.mdb" 'ConStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & DBFile 'データベース接続 Set cat = CreateObject("ADOX.Catalog") cat.ActiveConnection = ConStr 'テーブルの作成 Set tbl = CreateObject("ADOX.Table") tbl.Name = "Table1" Set tbl.ParentCatalog = cat 'フィールド(列)の設定 tbl.Columns.Append "登録ID", adInteger tbl.Columns.Append "氏名", adVarWChar tbl.Columns.Append "生年月日", adDate tbl.Columns.Append "備考", adLongVarWChar 'テータベースへ登録 cat.Tables.Append tbl ErrHandler: If Err.Number <> 0 Then MsgBox Err.Number & vbCrLf & Err.Description End If Set cat = Nothing Set tbl = Nothing End Sub |
実行結果
ADOX を使用してテーブル(Access)を削除する例
サンプルVBAソース
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
Sub Sample_ADOX_DeleteTable() '参照設定:Microsoft ADO Ext.6.0 for DDL and Security Dim cat As ADOX.Catalog Dim ConStr As String Dim DBFile As String On Error GoTo ErrHandler 'データベースのパスと名前 'Access 2007以降(accdb ファイル) DBFile = ActiveWorkbook.Path & "\mydb2.accdb" ConStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & DBFile 'Access 2003以前(mdb ファイル) 'DBFile = ActiveWorkbook.Path & "\mydb2.mdb" 'ConStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & DBFile 'データベース接続 Set cat = New ADOX.Catalog cat.ActiveConnection = ConStr 'テーブル「Table1」を削除 cat.Tables.Delete "Table1" ErrHandler: If Err.Number <> 0 Then MsgBox Err.Number & vbCrLf & Err.Description End If Set cat = Nothing End Sub |
実行結果
ADOX を使用してフィールド(列)を削除
サンプルVBAソース
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
Sub Sample_ADOX_CreateFields() '参照設定:Microsoft ADO Ext.6.0 for DDL and Security Dim cat As ADOX.Catalog Dim tbl As ADOX.Table Dim ConStr As String Dim DBFile As String Dim strTables As String On Error GoTo ErrHandler 'データベースのパスと名前 'Access 2007以降(accdb ファイル) DBFile = ActiveWorkbook.Path & "\mydb2.accdb" ConStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & DBFile 'Access 2003以前(mdb ファイル) 'DBFile = ActiveWorkbook.Path & "\mydb2.mdb" 'ConStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & DBFile 'テータベース接続 Set cat = New ADOX.Catalog cat.ActiveConnection = ConStr 'テーブル参照 Set tbl = cat.Tables("Table1") 'フィールド(列)の削除 tbl.Columns.Delete "登録ID" tbl.Columns.Delete "備考" ErrHandler: If Err.Number <> 0 Then MsgBox Err.Number & vbCrLf & Err.Description End If Set cat = Nothing Set tbl = Nothing End Sub |
実行前
実行後
関連記事
-
フィールド名(ADO)Field オブジェクト
Field オブジェクト Recordset オブジェクト内の列(フィールド)を …
-
クエリにパラメータを渡して結果を取得する(ADO)Command オブジェクト・Execute メソッド
クエリにパラメータを渡して結果を取得する手順 Command オブジェクトの作成 …
-
Recordset オブジェクト内のレコード数(ADO)RecordCount プロパティ
RecordCount プロパティ Recordset オブジェクトのレコード数 …
-
インデックス、プロパティの設定(ADOX)
インデックスを作成する index オブジェクト 【書式】 <CreateObj …
-
CSVファイルに接続(ADO)
ADOでCSVファイルに接続 ADO を使用してCSVファイルを読み込みます。C …
-
データベース(SQL Server)に接続する(ADO)
データベース(SQL Server)に接続 ODBC または OLE DB で接 …
-
トランザクション(ADO)BeginTrans、CommitTrans、RollbackTrans
ADO でのトランザクション処理 【書式】 Sub Sample_Transac …
-
クエリの作成・削除(ADOX)
ADOX を使用してクエリを作成・削除 クエリを作成する手順 【書式】 <参照設 …
-
Excelファイルに接続(ADO)
ADOでExcelファイルに接続 ADO を使用してExcelファイルを読み込み …
-
レコードの追加(ADO)AddNew メソッド,Update メソッド
データベースにレコードを追加する AddNew メソッド 新規レコードを追加し、 …
- PREV
- データベースを作成する(ADOX)
- NEXT
- インデックス、プロパティの設定(ADOX)