【发布时间】:2017-10-23 23:47:34
【问题描述】:
我正在尝试一些相当简单的事情,但我不知道我正在做的事情与其他编写的代码的不同之处。
我有一个非常简单的使用 Outlook 从 Excel 发送电子邮件:
Sub SendEmail()
Dim OutApp As Object
Dim OutMail As Object
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)
With Application
.EnableEvents = False
.ScreenUpdating = False
End With
With OutMail
.To = Range("ETF_CAB_Recon_Initial_Email_To")
.CC = Range("ETF_CAB_Recon_Initial_Email_CC")
.BCC = ""
.Subject = Range("ETF_CAB_Recon_Initial_Email_Subject")
.HTMLBody = Range("ETF_CAB_Recon_Initial_Email_Body")
.Attachments.Add Range("ETF_CAB_Recon_Initial_Email_Attachment")
.Display
End With
With Application
.EnableEvents = True
.ScreenUpdating = True
End With
Set OutMail = Nothing
Set OutApp = Nothing
End Sub
但是,它在我的文件附件中变得脾气暴躁。
错误消息:"Object doesn't support this property or method" 正在做一些研究,这显然是因为 .add 不是附件的一部分?但是,为什么这么多示例都有 Attachments.Add 作为将文件附加到 Outlook 电子邮件的代码?
我已确保 Outlook 对象库已打开,并且电子邮件的其余部分可以很好地填写 - 只是附件没有。调试也将附件显示为问题。
我尝试了几种不同的方法来定义位置。
我们将不胜感激任何有关解决方案的指导。
【问题讨论】:
-
NAA,但我建议的第一件事是使用强类型变量——
Dim outApp As New Outlook.Application,而不是Dim outApp As Object: Set outApp = CreateObject("Outlook.Application")。对 Outlook 对象库的引用本身并没有真正做任何事情。 -
在没有启动对象库的情况下尝试使用 Outlook 之前,我已经被烧毁了,所以我认为值得一提
-
当您编写
CreateObject("Outlook.Application")时,您是在要求 Windows 为您提供Outlook.Application对象的实例。但是 VBA 不知道所讨论的对象是Outlook.Application对象;就 VBA 而言,您可以编写以下outApp.NotAMethod()并且 VBA 会很高兴地编译它并尝试运行它。添加对 Outlook 的引用会告诉 VBAOutlook.Application对象的形状,但您仍然必须指定此特定变量引用Outlook.Application对象。完成后,VBA 环境... -
... 可以告诉你
outApp不应该有NotAMethod。