【发布时间】:2018-03-24 13:54:53
【问题描述】:
我有一个 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 文件存储在本地计算机上,因此将是一个空表单(或最后保存的表单)附在电子邮件中。
有什么方法可以创建带有工作簿副本但不发送的电子邮件?
【问题讨论】:
-
是的。您可以将最新版本的文件(由用户填写)保存到他们的“C:”,甚至是网络文件夹上的路径。将其附加到电子邮件中,然后删除保存的文件。
-
如果您要后期绑定 Outlook 对象模型,则
olMailItem常量/枚举未定义,因此被视为任何未声明的变量,即包含 @ 的隐式Variant987654325@,隐式转换为0。如果该代码在没有引用 Outlook 类型库的情况下编译,则未指定Option Explicit,这意味着会出现更多问题。如果引用了 Outlook ,则只需将New向上添加Outlook.Application并将其声明为As Outlook.Application,而不是使用后期绑定的Object。您也将获得 IntelliSense!