excel - 从 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
解决方案
您有两种选择:
选项 1:早期绑定
为了使用早期绑定,您需要设置一个引用:
Microsoft Outlook ##.# Object Library
这可以在 VBE > 工具 > 参考中完成。我认为这是您更喜欢的方法,因为您已经声明了变量。
使用此方法的代码中的问题是,在语句中Dim xxxx As Application
,As 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
。
推荐阅读
- c# - C# 将数据库移动到单独的线程,无需忙等待
- assembly - 如何通过比较数字来获得所需的功能?
- mysql - IF中的FROM在哪里写?
- python - 使用 `--global-option` 为 python 包指定设置时间依赖项
- laravel - YAML 异常:无效的 Yaml:在扫描下一个标记时发现字符 '\t' 无法在 " 中启动任何标记
" - react-native - Mapbox - “地图外”区域的样式颜色
- listview - 具有两行或多行无限滚动的 Flutter 水平 ListView
- amazon-web-services - 如何从另一个模板向现有 SQS QueuePolicy 添加新语句?
- python - Django DecimalField 返回字符串
- git - 如何在 git 分支中修复“您正处于上午会话中”?