【发布时间】:2015-07-28 06:55:47
【问题描述】:
我正在尝试在 Word 表单中创建一个宏,它将表单保存为 PDF,将其附加到电子邮件中,然后将电子邮件发送到预定义的电子邮件地址,同时抄送提交者,以便他们拥有表单的副本.
除了我一生都无法弄清楚如何让它获取发件人电子邮件地址之外,我一切正常。
这是宏:
Private Sub CommandButton21_Click()
Dim OL As Object
Dim EmailItem As Object
Application.ScreenUpdating = False
Set OL = CreateObject("Outlook.Application")
Set EmailItem = OL.CreateItem(olMailItem)
SubmitEmail = EmailItem.SenderEmailAddress
ActiveDocument.SaveAs2 FileName:="\\folder\folder\file.pdf", FileFormat:=wdFormatPDF
With EmailItem
.Subject = "Completed Training Selection Form"
.Body = "See Attached"
.To = "submit@test.com"
.CC = SubmitEmail
.Attachments.Add "\\folder\folder\file.pdf"
.Send
End With
Application.ScreenUpdating = True
MsgBox "Form submitted. Check your email for a copy of the form."
Set OL = Nothing
Set EmailItem = Nothing
End Sub
宏可以工作,但不能抄送任何人。我尝试了很多不同的方法来获取发件人地址,从移动代码到逐步回到帐户对象。
我已将 SubmitEmail 添加到正文消息以确认它是空白的。由于它是 Word 宏而 EmailItem 是 Outlook 对象,我还需要做些什么吗?计算机/网络权限会影响它吗?电子邮件从发件人的帐户发送得很好,但我现在完全不知所措。
编辑:我什至已经完成了 .CC = .SenderEmailAddress ,但仍然没有。
【问题讨论】:
-
是的,它应该是提交者的电子邮件地址。所以自动电子邮件抄送是发件人。我试过变量,我试过 .CC = .SenderEmailAddress,但它总是空白。它会编译,但我尝试的任何变量或输出,但发件人的地址出现空白。
-
尝试在您的代码上使用
Option Explicit。看看它是否抛出错误 -
使用
Recipients集合添加您的TO和CC收件人,最后按照here 的说明执行Recipients.ResolveAll。SenderEmailAddress仅针对收到的邮件设置,不适用于新创建的新MailItem对象。