【问题标题】:VBA Excel - Add references programmaticallyVBA Excel - 以编程方式添加引用
【发布时间】:2019-12-17 17:48:50
【问题描述】:

我使用“Microsoft Outlook 15.0 对象库”参考构建了一个 excel 宏,但是当我将文件发送给其他人时,他们收到此错误:“找不到项目或库”。

这个文件会被很多人使用,所以我必须从 VBA 代码中添加它。

我正在使用当您打开 excel 文件时运行的这段代码,它返回以下错误:“加载 DLL 时出错

Private Sub Workbook_Open()
       Application.VBE.ActiveVBProject.References.AddFromFile "C:\Program Files (x86)\Microsoft Office\Office15\MSOUTL.OLB\"
End Sub

你知道为什么会这样吗?

谢谢

【问题讨论】:

  • 因为你是早期绑定。使用后期绑定。您和其他人不必使用相同版本的 MS Office。
  • 可能是因为对方使用了另一个版本的 Office(不是 15.0)。如果是这种情况,则使用后期绑定(无需参考即可工作)而不是早期绑定(使用参考)。见excelmatters.com/2013/09/23/…
  • [来自我已删除答案下方的评论]...您会使用 excel 文件分发 mscomct2.ocx 吗?如果是,那么您将必须获得 mscomct2.ocx 的升级注册。此 ocx 不是 VBA 环境的本机。它是一个 VB6 控件,在这种情况下应避免使用。
  • 快速提问:你为什么还要使用mscomct2.ocx
  • 您可能对纯 VBA 附带的How can I create a calendar input in VBA Excel? 感兴趣。

标签: excel vba reference


【解决方案1】:

如果您仍想保留早期绑定,您可以使用 GUID 来添加库,即

Sub AddOL_Ref()

Application.VBE.ActiveVBProject.REFERENCES. _
    AddFromGuid "{00062FFF-0000-0000-C000-000000000046}", 1, 0

End Sub

使用 GUID 的优点是它是恒定的,不会随着程序的版本而改变。

Here 有人发现关于早期响应的缺点/优点的扩展讨论。后期绑定。

【讨论】:

  • 在添加 GUID 之前,删除损坏的引用,如图所示 Here :)
  • 对,而且无论你使用 AddFromGUID 还是 AddFromfile,还需要检查是否已经添加了引用。无论如何,损坏的引用都是令人头疼的原因。
  • 感谢您的回复,这样不会返回错误,但我需要从我下载的文件(mscomct2.ocx)中添加另一个引用,所以我不知道我是否可以对此使用 AddFromGuid。我能做什么?
  • 每个引用都有一个属性 GUID,您可以使用 VBA 确定它,例如,如果 oRef 是引用,那么 oRef.GUID 将为您提供 GUID。 Here 是如何做的代码。
【解决方案2】:

您必须删除引用并使用后期绑定

或者你也可以试试这个。将您的代码发送给一位拥有 2010MS 的用户。

转到 VBA > 工具 > 参考

检查是否有任何缺失的引用。您可能有 Microsoft Outlook 15.0 对象库 显示为丢失。取消选中此项,向下浏览并选择 Microsoft Outlook 14.0 Object Library

【讨论】:

    猜你喜欢
    • 2013-07-14
    • 2012-04-10
    • 2015-01-13
    • 2011-08-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多