はじめに
Accessのテーブルカラム名を動的に変更する方法について説明します。今回は、DAO(Data Access Objects)を使用してすべてのカラム名の最後ににアンダーバーを追加します。
ソース全体像
- AccessからVisual Basic Editorを開きます。
- 新しいモジュールを作成し、その中に以下のVBAコードを記述します。
Sub ChangeColumnNames()
Dim db As DAO.Database
Dim tbl As DAO.TableDef
Dim fld As DAO.Field
Dim newFieldName As String
' データベースオブジェクトを開く
Set db = CurrentDb
' 指定したテーブル名を取得
Set tbl = db.TableDefs("table_name")
' フィールドごとに処理
For Each fld In tbl.Fields
' 新しいフィールド名を作成
newFieldName = fld.Name & "_"
' カラム名を変更
tbl.Fields(fld.Name).Name = newFieldName
Next fld
' データベースオブジェクトを閉じる
db.Close
Set fld = Nothing
Set tbl = Nothing
Set db = Nothing
MsgBox "すべてのカラム名の後ろにアンダースコアが追加されました。", vbInformation
End Sub
解説
はい、もっと見やすくするために、コードを細分化して説明します。
- テーブル名を指定する
Dim tbl As DAO.TableDef
Set tbl = CurrentDb.TableDefs("table_name")
- テーブルのカラム名を変更する
Dim fld As DAO.Field
For Each fld In tbl.Fields
Dim newFieldName As String
newFieldName = fld.Name & "_"
tbl.Fields(fld.Name).Name = newFieldName
Next
- カラム名の変更を反映する
tbl.RefreshLink
- オブジェクトを解放する
Set fld = Nothing
Set tbl = Nothing
このマクロを実行すると、指定したテーブルのすべてのカラム名の後ろにアンダースコアが追加されます。