私は実際にこの小さな機能を想定どおりに動作させています:
Function createAttached(strTable As String, strPath As String, strBaseTable As String) As Boolean
On Error GoTo CreateAttachedError
Dim tdf As TableDef
Dim strConnect As String
Dim fRetval As Boolean
Dim myDB As Database
DoCmd.SetWarnings False
Set myDB = CurrentDb
Set tdf = myDB.CreateTableDef(strTable)
With tdf
.Connect = ";DATABASE=" & strPath
.SourceTableName = strBaseTable
End With
myDB.TableDefs.Append tdf
myDB.TableDefs.Refresh
fRetval = True
DoCmd.SetWarnings True
CreateAttachedExit:
createAttached = fRetval
Exit Function
CreateAttachedError:
If Err = 3110 Then
Resume CreateAttachedExit
Else
If Err = 3011 Then
Resume Next
Else
If Err = 3012 Then
Set tdf = myDB.TableDefs(strTable)
tdf.Connect = ";DATABASE=" & strPath
tdf.RefreshLink
fRetval = True
GoTo CreateAttachedExit
End If
End If
End If
End Function
このコードは問題なく動作します。別のデータベースからテーブルへのリンクを追加したいだけ何度でも関数を呼び出すことができます。ただし、同じデータベースからインポートするテーブルが約 30 あり、このスクリプトは呼び出すたびに最初から再起動します。データベースは別のサーバーにあるため、30 個のテーブルをリンクするのに約 1 分かかります。
同じデータベースから複数のテーブルをリンクする必要がある場合に、その関数をより速く動作させるためにできることはありますか? 1 つではなく、複数の strTable と strBaseTable をパラメーター (おそらく配列?) で使用したいのですが、これを行う方法がわかりません。
ありがとうございました。