将未保存的Excel文件附加到电子邮件

时间:2017-10-12 14:56:22

标签: excel vba email outlook

我有一个Excel表单供用户填写并作为附件发送(无需在本地保存在他们的计算机上)。

代码有效。

Dim Names()
Names = Array("testmail@gmail.com")
ActiveWorkbook.SendMail _
Recipients:=Names(), _
Subject:="Test subject"

我希望创建该电子邮件,直到用户附加了其他文件(在本地计算机上找到)之后才会发送。

我写了以下代码:

Dim olapp As Object
Dim olmail As Object
Dim wb As Workbook
Set olapp = CreateObject("outlook.application")
Set olmail = olapp.CreateItem(olMailItem)
Set wb = ActiveWorkbook

With olmail
.To = "testmail@gmail.com"
.Subject = "Test Subject"
.Body = ""
.Attachments.Add wb.FullName
.Display

我的问题是,只有最新保存的副本将附加到创建的电子邮件中,并且由于用户不会在其计算机上本地存储表单/ Excel文件,因此空表单(或上次保存的表单)将是附在电子邮件上。

是否可以使用工作簿的副本创建电子邮件,但不能发送电子邮件?

1 个答案:

答案 0 :(得分:0)

我在立即窗口中尝试了这种单行代码,它设法发送了一个未保存的文件:Application.Workbooks("Book2").SendMail("my.email@company.com","Test Subject")您可以在代码中使用wb代替我的示例中的Application.Workbooks(“ Book2”)。请注意,这将发送电子邮件,而无法对其进行编辑。