【问题标题】:How to display an attachment in an email before sending but remove the file name from appearing at the bottom of the email after sending如何在发送前在电子邮件中显示附件,但在发送后从电子邮件底部删除文件名
【发布时间】:2019-07-11 17:42:37
【问题描述】:

我正在尝试创建一个将 PDF 附加到电子邮件的 VBA 代码(我对此比较陌生)。我已经完成了所有工作(创建了电子邮件,附加了文件,当我按下“发送”时,电子邮件到达了它的目的地)但是当我使用 olByValue, 1 时,文件名在电子邮件末尾显示为文本发送后(除了显示在电子邮件顶部的实际附件之外)。

我正在尝试找到隐藏该文本的方法。我尝试使用 olByValue, 0 但我们工作中的部分协议包括在发送之前手动 QCing 所有电子邮件,这样就不会意外将客户端 A 的数据发送到客户端 B(宏不包括 .Send 命令,因此) .有没有办法可以在发送前查看附加到电子邮件的 PDF,但在发送后不将文件名显示为文本?

我正在使用 Excel for 365 创建电子邮件正文并将数据发送到 Outlook 365。

与附件相关的代码行如下。感谢您的帮助,如果我有不清楚的地方请告诉我。

If Range("AD45") = "Update" And Range("AJ36") = "1" And Range("AJ37") = "Yes" Then
            .Attachments.Add Range("AB26").Value, olByValue, 0
            .Body = Range("Z80").Value & vbNewLine & vbNewLine & vbNewLine & vbNewLine
    End If

【问题讨论】:

    标签: vba outlook


    【解决方案1】:

    位置由消息格式决定。

    富文本格式支持嵌入式附件,因此附件会显示在邮件正文中。纯文本和 HTML 格式的电子邮件不支持这一点,并在邮件标题下方但邮件正文上方的单独行中显示附件。请参阅Attachments show up in the message body 了解更多信息。

    例如,在将文件附加到电子邮件之前,您需要设置BodyFormat 属性,该属性设置一个OlBodyFormat 常量,指示正文的格式。 :

    With objMail  
     'Set body format to HTML  
     .BodyFormat = olFormatHTML  
     .HTMLBody = "<HTML><H2>The body of this message will appear in HTML.</H2><BODY>Type the message text here. </BODY></HTML>" 
    
     .Display  
     End With 
    

    【讨论】:

    • 谢谢!我不得不对其进行一些修改,因为作为电子邮件正文引用的 Excel 范围已经按照我们的需要进行了格式化,并且添加 .HTMLBody 会破坏该格式。但是将 .BodyFormat = olFormatHTML 添加到代码的开头,然后从附件行中删除 olByValue 部分可以满足我的需要。感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-30
    • 1970-01-01
    • 2017-01-16
    • 1970-01-01
    • 2021-03-06
    相关资源
    最近更新 更多