當 SQL Server 遷移、帳密變更、DSN 異動時,Access 連結資料表需重新指向。透過 VBA 自動化可批次處理所有連結表,避免手動逐一設定。
Function relink()
Dim db As Database
Dim tbl As TableDef
Dim a As String, b As String, d As String
a = "sa" ' 資料庫使用者
b = "abc" ' 資料庫密碼
d = "abcde" ' 資料庫名稱
Set db = CurrentDb
For Each tbl In db.TableDefs
' 536870912 = dbAttachedODBC (ODBC 連結表屬性)
If tbl.Attributes = 536870912 Then
tbl.Connect = "FILEDSN=d:\demo\steel.dsn;UID=" & a & ";PWD=" & b & _
";WSID=;DATABASE=" & d & ";Network=DBMSSOCN"
tbl.Attributes = dbAttachSavePWD ' 儲存密碼避免重複提示
tbl.RefreshLink
End If
Next
End Function
FILEDSN:指向 .dsn 檔案路徑(含驅動程式、伺服器、資料庫等設定)。UID / PWD:登入帳密,由變數動態帶入。WSID:工作站識別碼,可留空。DATABASE:預設資料庫名稱。Network=DBMSSOCN:指定使用 TCP/IP 網路庫。此 VBA 範本可快速解決 Access 連結表批次重連問題,結合 DSN 檔管理與動態帳密帶入,是 Access/SQL Server 混合架構維護的實用工具。