VBA:【ADOX】【テーブル操作】Accessのテーブルにインデックスを付ける
◆インデックスの付与
下記コードを実行すると、以下の画像のようにテーブルのフィールド名の「インデックス」部分に「はい(重複あり)」となります。

| 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 Access_インデックス付与()     Dim catADOX As ADOX.Catalog     Dim tblADOX As ADOX.Table     Dim idx As ADOX.Index     Dim Constr As String     Dim TName As String     Dim DBFile As String     Dim idxName_Array As Variant     Dim idxField_Array As Variant     Dim i As Long     'フルパス。作成するAccessのファイル名まで書く'     DBFile = "C:\Users\VBA\ADOX\サンプル.accdb"     TName = "テーブル1" 'インデックスを付与するテーブル名'     Constr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & DBFile     Set catADOX = New ADOX.Catalog     catADOX.ActiveConnection = Constr     Set tblADOX = catADOX.Tables(TName)     'インデックスの付与'     idxName_Array = Array("番号_index", "名前_index") '複数のインデックスを付けたい場合'     idxField_Array = Array("番号", "名前")     For i = 0 To UBound(idxName_Array)         Set idx = New ADOX.Index         With idx             .Name = idxName_Array(i)             .PrimaryKey = False '主キーの場合は「True」、このループでやるとエラーになる。'             .Columns.Append idxField_Array(i)         End With         tblADOX.Indexes.Append idx         Set idx = Nothing     Next i     Set tblADOX = Nothing     Set catADOX = Nothing     MsgBox "完了" End Sub | 
◆主キーにしたい場合
このインデックスを主キーとしたい場合は以下の箇所を「True」にします。
また、主キーは複合にもできますが、このやり方では一つにしか付けられないので、フィールド名を1つ指定します。
| 1 2 3 4 5 |         With idx             .Name = "番号_index"             .PrimaryKey = True'ここをTrueにする'             .Columns.Append "番号"         End With | 

 
																			 
																			 
																			






