【问题标题】:Outlook Redemption error in MS Access: ActiveX component can't create objectMS Access 中的 Outlook 兑换错误:ActiveX 组件无法创建对象
【发布时间】:2018-12-06 11:00:51
【问题描述】:

代码:

    Dim Application As Object, namespace As Object
    Set Application = CreateObject("Outlook.Application")
    Set namespace = Application.GetNamespace("MAPI")
    namespace.Logon

    Set safeItem = CreateObject("Redemption.SafeMailItem") ' Error here!

通常这段代码在我的大多数机器上都可以正常工作——但在这种情况下,如果重要的话,我会在 MS Access 2010(64 位)中运行它。

但是在分配了 safeItem 的行,我得到了“ActiveX 组件无法创建对象”的错误。这甚至意味着什么?为什么我不能创建对象?对 Redemption 的引用似乎没问题/没有显示为 MISSING 或任何内容。

我在谷歌上搜索了这个错误,似乎有很多可能的原因,因为错误是如此模糊。这种特殊情况是否有众所周知的原因?

【问题讨论】:

  • 你能引用 Outlook 和 Redemption 类型库而不是后期绑定吗?
  • 只有这个盒子运行的是 64 位的 Access 吗?您可能需要分发和注册 64 位版本的 Redemption

标签: vba ms-access ms-access-2010 outlook-2010 outlook-redemption


【解决方案1】:

确保 Outlook(和 MAPI 系统)的位数优于 Access 的位数 - 有关详细信息,请参阅 http://www.dimastr.com/redemption/faq.htm#ErrorCreatingRedemptionObject

【讨论】:

  • 位数确实匹配,是的(都是 64 位)
  • 有趣 - 这可以解释为什么我的 VB 6(32 位)应用程序已停止使用 Outlook 2016。不幸的是,我认为我的 VB6 编译器中没有相应的 CPU 选项 - 我可能不得不卸载 Office 64 位并安装 32 位版本(如果有的话)。这也可以解释为什么我没有从我的客户那里听到这个问题,只有我自己。
  • 您的 VBA 代码应该仍然可以正常工作。尝试使用 regsvr32.exe 重新注册 64 位版本的 Redemption (redemption64.dll)。
【解决方案2】:

creatobject 调用可能会引发各种类型的错误,包括自动化错误 (-2146232576) 等。根据我的经验,当一个软件在一台 PC 而不是另一台 PC 上运行良好时,并且错误是由 creatobject 调用引起的,那么罪魁祸首通常是丢失或错误注册的 DLL。

我发现的快速解决方法(特别是在 Windows 10 中)是打开 Windows 功能,如果没有选择.NetFramework 3.5,然后选择它并单击确定。如果选择了 .Netframework 3.5,则取消选择它并单击 OK。重新启动,返回 Windows 功能,然后重新选择 .NetFramework 3.5 并单击确定。这将导致 Windows 安装和注册所有必需的 DLL 和其他组件。

你应该在那之后。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-06-09
    • 1970-01-01
    • 2011-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多