我创建了一个子程序,它抓取所有相关的详细信息和附件,为我发送自动发送的电子邮件。这是我的代码:
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对象库非常感谢任何帮助!
答案 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
('硬回车')字符。
希望这有帮助。