У меня есть база данных Access, работающая с Access 2010 и 2016. Итак, если первый раз открывается с 2016 года, когда пользователь открывает его с 2010 года, возникает ошибка ссылки при попытке доступа к библиотеке Excel (библиотека объектов Microsoft Excel 16.0). Чтобы решить эту проблему, мне нужно вручную изменить ссылку на 14.0 в справочном меню.
Я пытаюсь сделать это программно в VBA, проверяя версию Access, если версия 2010 (14.0) мне нужна удалить библиотеку объектов Microsoft Excel 16.0 и добавить вместо нее 14.0. Когда наступит 2016 год, я думаю, что мне не нужно ничего делать.
пробовать два варианта:
- С кодом прекомпиляции и директивами:
#Const ver = Application.version
#If ver = "14.0" Then
Call References.AddFromFile("C:\Program Files (x86)\Microsoft Office\Office12\EXCEL.exe")
#End If
#If ver = "16.0" Then
'Call References.AddFromFile("C:\Program Files (x86)\Microsoft Office\Office14\EXCEL.exe")
#End If
Моя проблема здесь, при проверке документации, заключается в том, что я не совсем уверен, смогу ли я проверить версию доступа во время предварительной компиляции.
В моем начальном методе открытия формы
If Dir("C:\Program Files (x86)\Microsoft Office\Office12\EXCEL.exe") <> "" And Not refExists("excel") Then
Access.References.AddFromFile ("C:\Program Files (x86)\Microsoft Office\Office12\EXCEL.exe")
End If
If Dir("C:\Program Files (x86)\Microsoft Office\Office14\EXCEL.exe") <> "" And Not refExists("excel") Then
'Access.References.AddFromFile ("C:\Program Files (x86)\Microsoft Office\Office14\EXCEL.exe")
End If
If Dir("C:\Program Files (x86)\Microsoft Office\Office12\EXCEL.exe") = "" And Dir("C:\Program Files (x86)\Microsoft Office\Office14\EXCEL.exe") = "" Then
MsgBox ("ERROR: Excel not found")
End If
Private Function refExists(naam As String)
Dim ref As Reference
refExists = False
For Each ref In References
If ref.Name = naam Then
refExists = True
End If
Next
End Function
В настоящее время у моей начальной формы много внутренних ссылок, и некоторые из них используют библиотеку Excel. Когда я пытаюсь это сделать, возникает ошибка после выполнения кода.
Кто-нибудь знает, что я могу сделать, чтобы решить эту проблему? Я надеюсь, что мой код поможет вам понять проблему.
Спасибо!