以编程方式添加引用

Fal*_*con 11 ms-access vba ms-office

我们有一个Access-Application,它在某些客户端上不起作用,主要是因为引用被破坏了.例如,当您使用访问运行时2007启动访问应用程序但安装了版本2003或2000的办公室时,就会发生这种情况.左/右/修剪等功能就此停止工作.

我认为解决这个问题的唯一方法是以编程方式检查安装了哪个办公室版本并以编程方式添加引用,因为在这些异构环境中我们无法控制用户安装的内容.具体来说,我需要引用Excel和Word的Microsoft Office对象库.

但我既没有所有办公室版本的指导,也没有线索如何自动检查它们.

The*_*ens 10

所以,是的,这个答案有点晚了,但万一有人偶然发现这个问题,就像我一直在寻找答案一样,我想出了以下一些代码来添加一个excel参考,它似乎工作正常,同样在MDE/ACCDE!

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
Run Code Online (Sandbox Code Playgroud)

refExists引用了以下函数:

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
Run Code Online (Sandbox Code Playgroud)


Ton*_*ews 3

如果您发送 MDE/ACCDE,则无法更新您的参考资料。

但是哪些具体的参考资料导致了您的问题呢?您可能正在引用 Word、Excel 或 Outlook。如果是这样,请使用后期绑定,以便您的解决方案与客户端系统上安装的版本无关。

后期绑定意味着您可以安全地删除引用,并且只有在应用程序执行相关代码行时才会出现错误。而不是在启动应用程序时出错并且根本不允许用户使用应用程序。或者当调用 mid、left 或 trim 函数时。

当您不知道目标系统上将驻留哪个版本的外部应用程序时,这也非常有用。或者,如果您的组织正在从一个版本迁移到另一个版本。

有关更多信息,包括附加文本和一些详细链接,请参阅“ Microsoft Access 中的后期绑定”页面。