プログラミングのメモ

プログラミングの学び直し備忘録

VBA:Excel :ACCESS DB

データベースを作成する(ADOX)

データベースを作成する(ADOX)
AccessVBA、ADOXでmdb作成|マコトのおもちゃ箱 ~ぼへぼへ自営業者の技術メモ~

テーブルの作成・削除/フィールドの作成・削除(ADOX)

テーブルの作成・削除/フィールドの作成・削除(ADOX)

Sub Sample_ADOX_CreateTable1()
 
    '参照設定:Microsoft ADO Ext.6.0 for DDL and Security
    
    '-------------------------------------------------------------------------
    Dim prm_DataSrc As String: prm_DataSrc = "D:" & "\TestDB.accdb"
    Dim prm_TbName  As String: prm_TbName = "TB_Test"
    
    
    Dim dic_Fld As Dictionary
    Set dic_Fld = New Dictionary
        
    'フィールド(列)の設定
    dic_Fld.Add "登録ID", adInteger
    dic_Fld.Add "氏名", adVarWChar
    dic_Fld.Add "生年月日", adDate
    dic_Fld.Add "備考", adLongVarWChar
    
    '-------------------------------------------------------------------------
    
    
    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 = prm_DataSrc
    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 = prm_TbName
    Set tbl.ParentCatalog = cat
    
    'フィールド(列)の設定
    Dim v
    For Each v In dic_Fld
        tbl.Columns.Append v, dic_Fld(v)
    Next v
'    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