Я пытаюсь сделать то, что делал сотню раз, но вдруг это не сработает.
acc.AutomationSecurity = msoAutomationSecurityLow 'Remove Security Prompt
acc.OpenCurrentDatabase path & "Year " & Range("yr") & "\" & Range("yr") & Range("mo") & "\Year " & Range("yr") & Range("mo") & " GENERIC DB NAME.mdb", True
'update link
acc.CurrentDb.TableDefs("TABLE NAME").Connect = "MS Access;DATABASE=" & path & "Year " & Range("yr") & "\" & Range("yr") & Range("mo") & "\Year " & Range("yr") & Range("mo") & " OTHER DB.mdb"
acc.CurrentDb.TableDefs("TABLE NAME").RefreshLink
Я не знаю, связано ли это с тем фактом, что мы недавно обновились до Excel 2010, а база данных по-прежнему ACCESS 2003, но это должен быть простой код для запуска.Ничего не происходит, когда я запускаю приведенный выше код.Файл открывается правильно, но строка соединения никогда не присваивается объекту таблицы def, т.е.Он работает без ошибок, но таблица не связана с новой базой данных.Я обнаружил, что следующий код работает, и использовал его, чтобы обойти проблему.Мне все еще любопытно, почему я не могу присвоить значение свойству .connect в стиле 'application.currentdb.tabledef ("TABLE"). Connect ", но если я назначу currentdb новому объекту базы данных, я смогу.
Так что я не знаю почему, но если я использую это, это работает
dim db as DAO.database
set db = acc.CurrentDb
db.TableDefs("TABLE NAME").Connect = "MS Access;DATABASE=" & path & "Year " & Range("yr") & "\" & Range("yr") & Range("mo") & "\Year " & Range("yr") & Range("mo") & " OTHER DB.mdb"
db.TableDefs("TABLE NAME").RefreshLink
Спасибо за любую помощь, которую вы можете предоставить.