编译错误:不支持对象库功能 Outlook.Application

rba*_*kam 7 ms-access outlook vba

我的任务是在 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
Run Code Online (Sandbox Code Playgroud)

我尝试按照另一个网站上的建议将其更改为此。

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

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

Bus*_*ist 6

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

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

  • 这对我来说非常有效。Office 更新后我开始遇到问题。我严重依赖 VBA 代码来自动生成报告。我的代码位于 Outlook VBA 的 Module1 中。我右键单击 Module1,然后将代码导出到文件中。然后我再次右键单击并删除模块,当提示导出(已导出)时单击“否”。然后再次右键单击并单击导入并选择之前导出的文件。代码又开始工作了。 (3认同)
  • 为我工作!甚至不需要重新启动 Outlook。只需导出、删除和导入即可。 (2认同)

小智 5

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

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