VBA では、次のように番号付きのテーブル名をループできます...
Dim strTable As String
Dim i As Long
For i = 0 To 20
strTable = "table_" & CStr(i)
Debug.Print strTable
Next i
ただし、印刷する以外に、各テーブル名で何かをしたいと考えています。だから、あなたはすでにあなたのCREATE TABLE
声明を考え出したとしましょう。こんな感じかも・・・
CREATE TABLE table_name (
field_1 INTEGER PRIMARY KEY,
field_2 TEXT(255));
For
そのため、その DDL ステートメントを文字列変数にロードし、ループのたびtable_name
に の現在の値に置き換えて、strTable
その DDL ステートメントを実行することができます。
Dim strTable As String
Dim i As Long
Dim strSql As String
strSql = "CREATE TABLE table_name (" & vbCrLf & _
"field_1 INTEGER PRIMARY KEY," & vbCrLf & _
"field_2 TEXT(255));"
For i = 0 To 20
strTable = "table_" & CStr(i)
CurrentProject.Connection.Execute Replace(strSql, _
"table_name", strTable)
Next i
このReplace()
関数は、Access 2000 で初めて利用可能になりました。以前のバージョンの Access を使用している場合は、SQL 文字列を処理する別の方法が必要になります。
ALTER TABLE
ステートメントを実行したい場合は、代わりに実行できます。
なので、やりたいことはVBAで簡単にできると思います。しかし、私はあなたがそれをするべきかどうか確信が持てません。同一の構造を持つ複数のテーブルは、通常、設計エラーを示す危険信号です。あなたの場合、それが設計エラーであると結論付ける証拠はありません。OTOH、それが設計ミスではないと結論付ける証拠はありません。;-)