【问题标题】:Compile Error: Object library feature not supported Outlook.Application编译错误:不支持对象库功能 Outlook.Application
【发布时间】:2017-06-23 09:32:04
【问题描述】:

我的任务是在 Microsoft Access 系统上修复 VB 中的一个问题,但我无法弄清楚。此问题仅发生在运行该软件的 5 台 PC 中的一台上。 我试过了

  • 删除 Outlook & Access 并重新安装。
  • 删除 Microsoft Access 应用程序并重新安装。
  • 更改了代码以匹配我在另一个网站上找到的答案。

此代码引发错误 代码如下。

    Dim objOutlook As Outlook.Application
    Dim objMailItem As MailItem
    Dim db As DAO.Database

    'Create email object and send attachment

    Set objOutlook = DetectOutlook()
    If objOutlook Is Nothing Then
        Set objOutlook = New Outlook.Application
    End If

我尝试按照其他网站的建议将其更改为这个。

    Dim objOutlook As Object
    Dim objMailItem As MailItem
    Dim db As DAO.Database

    'Create email object and send attachment

   If GetObject(, "Outlook.Application") = True Then    'Outlook was already running
        Set objOutlook = GetObject(, "Outlook.Application")    'Bind to existing instance of Outlook
    Else    'Could not get instance of Outlook, so create a new one
        Set objOutlook = New Outlook.Application
    End If

此代码更改最终导致 Access 在运行时关闭。 我是 VB 和 Access 开发的新手,所以也许这是一个简单的修复,如果您需要任何进一步的信息,请询问。其 2016 年微软仅供参考。 提前谢谢你

【问题讨论】:

  • 我怀疑这个问题是引用了不同的 Outlook 版本。如果您的用户环境可能使用不同版本的 Outlook 或访问权限,则需要使用后期绑定。您发布的第二个代码已经完成了一半,但我建议您在此处阅读; sourcedaddy.com/ms-access/late-binding.html
  • 就是这样,谢谢。使用我的第二个答案,我将 Set objOutlook = New Outlook.Application 更改为 Set objOutlook = CreateObject("Outlook.Application") 如果您想将其添加为答案,我会接受。非常感谢

标签: vba ms-access outlook


【解决方案1】:

您不妨尝试 Dreadfool 在MSDN 建议的奇怪解决方法。它不需要您更改一行代码。

只需将宏保存到另一个文件中,然后将这个新文件导入您的项目。当代码在 365 更新后停止工作时,这个简单的步骤对我来说很有帮助。

【讨论】:

  • 感谢您的回答。如果将来发生这种情况,我会研究这种方法。
  • 这对我来说非常有效。我在 Office 更新后开始遇到问题。我严重依赖 VBA 代码来自动生成报告。我的代码在 Outlook VBA 的 Module1 中。我右键单击 Module1,然后将代码导出到文件中。然后我再次右键单击并删除模块,在提示导出(已导出)时单击否。然后再次右键单击并单击导入并选择之前导出的文件。代码又开始工作了。
  • 天哪。这个错误多年来一直困扰着我,因为从那时起我主要使用 vba。所以总是导出导入代码???
  • 对我有用的是打开 VB 编辑器,然后进入工具 > 参考。我不得不检查更多参考资料(OLE 自动化、EBApp 等)。我再次运行宏,没有出现错误。
  • 为我工作!甚至不必重新启动 Outlook。只需导出、删除和导入即可。
【解决方案2】:

我怀疑问题是对不同 Outlook 版本的错误引用。

如果您的用户环境可能使用不同版本的 Outlook 或访问权限,则需要使用后期绑定。您发布的第二个代码已经完成了一半,但我建议您在此处阅读; http://sourcedaddy.com/ms-access/late-binding.html

【讨论】:

    【解决方案3】:

    奇怪的是,我不知道为什么,我按照这个用户建议的一个稍微不同的版本解决了这个问题:

    对我有用的是打开 VB 编辑器,然后进入工具 > 参考。我不得不检查更多参考资料(OLE 自动化、EBApp 等)。我再次运行宏,没有出现错误。 – jpruizs 2018 年 5 月 9 日 2:52

    相反,我拥有所有相关的对象库引用,但我将它们重新排序如下:

    1. Visual Basic 应用程序
    2. Microsoft Outlook 16.0 对象库
    3. Microsoft Office 16.0 对象库
    4. OLE 自动化

    不知何故,这奏效了,我不再收到编译错误。我很确定库引用是罪魁祸首,因为我从另一个运行良好的系统复制了宏文本。

    【讨论】:

      【解决方案4】:

      刚刚遇到同样的问题,在同时安装 Visio 2016 64 位和 Office 2016 ProPlus 64 位安装后,Outlook 宏停止工作(同样的错误消息,但在“GetFolder”调用中)。

      第一次尝试重启 -> 没有效果。

      然后尝试离线修复Office -> 没有效果。

      然后在线修复 -> 让它再次工作。

      【讨论】:

        【解决方案5】:

        当您将office升级到2019或office 365版本时,您需要重新导入您的自定义开发,即vba中的所有模块、表单等。

        只需将所有模块导出到一个文件夹中,将其删除并再次导入。它会解决问题。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-10-14
          • 1970-01-01
          • 1970-01-01
          • 2015-10-02
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多