首页 > 解决方案 > 从 Excel 创建 Outlook 应用程序会生成类型不匹配错误

问题描述

我正在尝试使用 Outlook 模板创建 Outlook 电子邮件。

在线上Set obApp = Outlook.Application,我收到错误:

错误:13 类型不匹配

我似乎使用了与本网站上其他帖子中有关该主题的相同语法。

我也尝试Set obApp = CreateObject("Outlook.Applciation")过同样的结果。

我在工具-> 参考中检查了 OLE 自动化、Microsoft Outlook 16.0 对象库、Microsoft Office 16.0 库和 Microsoft Excel 16.0 对象库,以及用于应用程序的 Visual Basic。

Sub CreateEmailfromTemplate()
    Dim obApp As Application
    Dim NewMail As Outlook.MailItem

    Set obApp = Outlook.Application 'THE PROBLEM IS HERE
    Set NewMail = obApp.CreateItemFromTemplate("F:\Folder1\Automation\EmailTemplates\TEST TEST.oft")
    NewMail.Display

End Sub

标签: excelvbaoutlooktype-mismatch

解决方案


您有两种选择:

选项 1:早期绑定

为了使用早期绑定,您需要设置一个引用:

Microsoft Outlook ##.# Object Library

这可以在 VBE > 工具 > 参考中完成。我认为这是您更喜欢的方法,因为您已经声明了变量。

使用此方法的代码中的问题是,在语句中Dim xxxx As ApplicationAs Application指的是Excel 的 Object Model。您需要指定要使用 Outlook。

Sub CreateEmailfromTemplate()

    Dim obApp As New Outlook.Application    '<-- Notice Change
    Dim NewMail As Outlook.MailItem

    Set NewMail = obApp.CreateItemFromTemplate("F:\Folder1\Automation\EmailTemplates\TEST TEST.oft")
    NewMail.Display

End Sub

选项 2:后期绑定

您无需在此方法中设置引用,但 Outlook 的类型和常量在编译时将不可用。编译器将在运行时获取这些。

Sub CreateEmailfromTemplate()

    Dim obApp As Object
    Dim NewMail As Object

    Set obApp = CreateObject("Outlook.Application")
    Set NewMail = obApp.CreateItemFromTemplate("F:\Folder1\Automation\EmailTemplates\TEST TEST.oft")
    NewMail.Display

End Sub

请注意,在此方法中 Outlook 的对象被声明为 type Object


推荐阅读