在 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));
因此您可以将该 DDL 语句加载到字符串变量中,然后每次通过您的 For 循环将 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,没有证据表明它不是设计错误。 ;-)