努力使用Excel VBA将文件附加到Outlook电子邮件

我正在尝试一些相当简单的事情,我不知道我正在做的与其他代码是如何做的不同。

我有一个非常简单的使用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对象库已经打开,电子邮件的其余部分填充很好 – 只是不附件。 debugging也显示附件为问题。

我尝试了几种不同的方式来定义位置。

任何指导解决scheme,将不胜感激。

尝试完全限定您的工作簿并将stringvariables分配给您的范围

看例子

 Option Explicit Sub SendEmail() Dim OutApp As Object Dim OutMail As Object Dim Sht As Object Dim RecipTo As String Dim RecipCC As String Dim Subject As String Dim Atmt As String With Application .EnableEvents = False .ScreenUpdating = False End With Set OutApp = CreateObject("Outlook.Application") Set OutMail = OutApp.CreateItem(0) Set Sht = ThisWorkbook.Worksheets("Sheet1") With Sht RecipTo = Sht.Range("A1").Value RecipCC = Sht.Range("B1").Value Subject = Sht.Range("C1").Value Atmt = Sht.Range("D1").Value ' Attachment Path With OutMail .To = RecipTo .CC = RecipCC .BCC = "" .Subject = Subject .HTMLBody = Sht.Range("E1") .Attachments.Add Atmt .Display End With End With With Application .EnableEvents = True .ScreenUpdating = True End With Set OutMail = Nothing Set OutApp = Nothing End Sub 

看到另一个例子在这里https://stackoverflow.com/a/38303646/4539709

附件对象(Outlook)

Attachments.Add只需要一个string(文件名)或其中一个Outlook项目(如MailItem)的实例。 您正在传递一个Range对象。