从Excel创建Outlook应用程序会生成类型不匹配错误

时间:2018-11-11 06:51:07

标签: excel vba outlook outlook-vba type-mismatch

我正在尝试使用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 for Applications。

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

1 个答案:

答案 0 :(得分:2)

您有两种选择:

选项1:早期绑定

为了使用早期绑定,您需要设置对以下内容的引用:

Microsoft Outlook ##.# Object Library

这可以在VBE>工具>参考中完成。由于您已经声明了变量,因此我认为这是您首选的方法。

使用此方法的代码中的问题是,在语句Dim xxxx As Application中,As Application引用了 Excel的对象模型。您需要指定要使用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的对象被声明为类型Object