【问题标题】:Why am I not getting an email address from .SenderEmailAddress?为什么我没有从 .SenderEmailAddress 获得电子邮件地址?
【发布时间】: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 集合添加您的TOCC 收件人,最后按照here 的说明执行Recipients.ResolveAllSenderEmailAddress 仅针对收到的邮件设置,不适用于新创建的新 MailItem 对象。

标签: vba ms-word outlook


【解决方案1】:

您正在添加刚刚创建的邮件的发件人电子邮件地址,当然 SenderEmailAddress 将是“”,因为该邮件从未提交过。

它应该是当前用户的地址吗?试试Application.Session.CurrentUser.Address

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-22
    • 2014-12-02
    • 1970-01-01
    • 2019-01-24
    相关资源
    最近更新 更多