我有一个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:\
或甚至网络文件夹上的路径中。将其附加到电子邮件中,然后删除已保存的文件。 - Scott HoltzmanolMailItem
常量/枚举未定义,因此将被视为任何未声明的变量,即隐式包含vbEmpty
的Variant
,它隐式转换为0
。 如果该代码在没有对Outlook类型库的引用的情况下编译,则未指定Option Explicit
,这意味着应该期望更多的问题。 如果引用了Outlook,则只需New
Outlook.Application
并将其声明为As Outlook.Application
,而不是使用后期绑定的Object
。 您还将获得IntelliSense! - Mathieu Guindon