在Outlook电子邮件中重新排序文本和附件

时间:2014-10-08 12:42:54

标签: vba outlook-vba

我正在从宏(Excel文件宏)创建一封电子邮件,并尝试将附件夹在文本之间。使用以下代码,在签名后添加附件,我希望它具有正文,文件,签名

Set olMailItem = olApp.CreateItemFromTemplate(EmailFilePath)
With olMailItem
    'search and replace subject for "KW ##" to the kw from "Key Metrics" tab
    .Subject = Replace(.Subject, "KW ##", KW)
    .Attachments.Add ("H:\QA\QA Mgmt\Presentations\" & reports(r).filename)
    .Body = .Body & GetSignature(emailTemplatePath & "EmailSignature.txt")
    .Display
End With

EmailFilePath是具有现有正文和收件人的msg文件的路径。有没有办法可以强制在附加文件后添加签名?

提前致谢

1 个答案:

答案 0 :(得分:0)

只有当" bodyformat"时,附件才能放在身体内部。电子邮件的设置为" Rich Text"

您可以通过在函数中实现以下代码行来完成此操作:

.BodyFormat = olFormatRichText ' 3 also works

实施

Set olMailItem = olApp.CreateItemFromTemplate(EmailFilePath)
With olMailItem
    ' **** Add this line vvvv ****
    .BodyFormat = olFormatRichText ' 3 also works

    'search and replace subject for "KW ##" to the kw from "Key Metrics" tab
    .Subject = Replace(.Subject, "KW ##", KW)
    .Attachments.Add ("H:\QA\QA Mgmt\Presentations\" & reports(r).filename)
    .Body = .Body & GetSignature(emailTemplatePath & "EmailSignature.txt")
    .Display
End With

此外," .Attachments.Add"的第3个参数;是"位置"默认情况下它为0,但此数字表示附件所在的正文中的哪个字符。如果您的号码大于字符总数,它将自动放在最后。如果您的号码是1,它将被放在开头。

这应该可以正常工作,只需更改位置参数的数量

    .Attachments.Add Source:="H:\QA\QA Mgmt\Presentations\" & reports(r).filename, Position:=100

有关Outlook附件的更多信息:http://msdn.microsoft.com/en-us/library/office/ff869553(v=office.15).aspx