I'm not sure if this helps but what I do is have a local table that holds the names of the SQL Server table Names (as they appear in Access) and their SourceName (table names as the appear in SQL Server) usually they look like this:
tableName: dbo_LookupCodes; SourceName: LookupCodes
On my application AutoExec, I delete all links then run a recordset on the local table and loop through it to reestablish each linked table's ODBC connection string.
Do until rec.EOF
strTableName = rec.Fields(LinkedTableName).Value
Set tdfNew = Currentdb.CreateTableDef(strTableName)
tdfNew.SourceTableName = rec.Fields(SourceName).Value
tdfNew.Connect = cODBCPATH
Currentdb.TableDefs.Append tdfNew
rec.MoveNext
Loop
My cODBCPath is a constant:
Public Const cODBC as String = "ODBC;DSN=MyDSNName;Description=MyDB;UID=MyUserID;PWD=PassWord;DATABASE=MyDB"
(You can copy it directly from a pass-through query's connection string.)
This works for views as well.
One thing to remember is that the connection string for your queries and tables is different from an ADO connection object's connection string. If you use the "ODBC" connection on an ADO Connection object, it will not open.
Hope that helps.
Bob