Как управлять ссылками на Access 2010 и Access 2016 в одной базе данных - PullRequest
0 голосов
/ 29 апреля 2020

У меня есть база данных 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 год, я думаю, что мне не нужно ничего делать.

пробовать два варианта:

  1. С кодом прекомпиляции и директивами:
#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. Когда я пытаюсь это сделать, возникает ошибка после выполнения кода.

Кто-нибудь знает, что я могу сделать, чтобы решить эту проблему? Я надеюсь, что мой код поможет вам понять проблему.

Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...