使用VBA在Outlook电子邮件中附加文件

时间:2016-02-12 00:34:59

标签: vba email outlook

我创建了一个子程序,它抓取所有相关的详细信息和附件,为我发送自动发送的电子邮件。这是我的代码:

Sub Mail_workbook_Outlook_1()
    Dim OutApp As Outlook.Application
    Dim OutMail As Outlook.MailItem
    Dim To1 As String, CC1 As String, BCC1 As String, Title1 As String, Body1 As String, Att1 As String


' Create "Other Distribution - In Email" Emails

    Set OutApp = CreateObject("Outlook.Application")
    Set OutMail = OutApp.CreateItem(olMailItem)
To1 = Cells(8, 2).Value
CC1 = Cells(8, 3).Value
BCC1 = Cells(8, 4).Value
Title1 = Cells(8, 5).Value
Body1 = Cells(8, 6).Value
Att1 = Cells(8, 7).Value

    On Error Resume Next
    With OutMail
        ' BodyFormat command makes the email a rich format message allowing us to place attachments within the body of the email instead of in the attachment header
        .BodyFormat = olFormatRichText
        .To = To1
        .CC = CC1
        .BCC = BCC1
        .Subject = Title1
        .Body = Body1
        .Attachments.Add Att1, , 10
        .Display
    End With
    On Error GoTo 0

    Set OutMail = Nothing
    Set OutApp = Nothing
End Sub

这很好用,并在我的电子邮件正文末尾插入我的附件。问题在于这个特定的界限:

.Attachments.Add Att1, , 10

在此代码中,“10”应表示附件的位置。 I.E.这应该意味着在我的“Body1”变量中的前9个字符后,而不是第10个字符,附件将放在这里。见这里:https://msdn.microsoft.com/en-us/library/office/ff869553.aspx

然而,出于某种原因,无论我在位置选项中放入什么号码,它总是将我的附件放在电子邮件的最后。我需要附件在几个段落的中间,所以这是一个问题。知道是什么导致了这个吗?

我应该提到我从Tools> References。

中选择了Microsoft Outlook对象库

非常感谢任何帮助!

2 个答案:

答案 0 :(得分:1)

所以我发现这是Outlook 2008/2010中的一个错误,似乎没有修复:(

http://argurosblog.blogspot.com/2011/11/how-to-create-task-or-appointment-using.html

答案 1 :(得分:0)

使用以下内容更改正文内容:

    Body1 = "This is the body of the mail, line 1" & vbcrlf 
    Body1 = Body1 &  "This is the second line of text, line 2" & vbcrlf 
    Body1 = Body1 & "This is the last line of text, line 3."

并运行您的代码。

正如您所看到的,附件未放在第10个字符之后,而是放在第10个字符之后的第一个vbcrlf之后。

如果您尝试.Attachments.Add Att1, , 50(在第二行的中间),它将被放置在第2行和第3行之间。

如果您删除了身体中的所有vbcrlf个字符,它将被放置在身体的末尾,这可能就是您的想法。

解析您的身体内容并在需要时插入vbcrlf('硬回车')字符。

希望这有帮助。