我正在尝试在Excel 2010的Outlook 2010电子邮件中嵌入页眉和页脚图像。
此thread所确认的thread给了我我认为可以使用的解决方案,但是当我尝试访问attachment.PropertyAccessor
时遇到了287运行时错误。我尝试过使用中间对象oAttachPA
,也可以不使用中间对象。我引用了MS Outlook对象库。当我将手表设置为oAttach.PropertyAccessor
时,它是应用程序定义的错误或对象定义的错误。
如果我不使用PropertyAccessor
,则可以将它们放置在适当的位置,除了它们不会显示为图像,而是显示为“无法显示链接的图像。他们的文件可能已被移动,重命名或删除。验证链接是否指向正确的文件和位置。”我发现这个thread表示Outlook 2007+不支持嵌入。那是不是只有基数为64的字符串?
我尝试使用此thread所建议的图像尺寸播放,希望缩小后会出现。没有运气。
我尝试按以下方式引用这些图像:"<br> <br> <img src = 'Footer.jpg'>"
,如本thread所建议。也没有运气。
我尝试使用.jpg
和.png
图片。
有人有什么想法吗?我的完整代码如下。
EDIT 感谢您提出的解决方案。线程How to add an embedded image to an HTML message in Outlook 2010中的所有解决方案都不适合我。使用它作为起点,我得到了287运行时错误。
Public Sub Emailer(FrmTxt As String, ToTxt As String, CCTxt As String, BCCTxt As String, SubjTxT As String, Bdy As String, aPath As String)
Const PR_ATTACHMENT_HIDDEN = "http://schemas.microsoft.com/mapi/proptag/0x7FFE000B"
Const PR_ATTACH_CONTENT_ID = "http://schemas.microsoft.com/mapi/proptag/0x3712001F"
Dim OutApp As Object, outMail As Object
Dim attachArr As Variant
Dim c As Long
Dim oAttach As Outlook.Attachment
Dim oAttachPA As Object
Set OutApp = CreateObject("Outlook.Application")
Set outMail = OutApp.CreateItem(0)
With outMail
.SentOnBehalfOfName = FrmTxt
.To = ToTxt
.CC = CCTxt
.BCC = BCCTxt
.Subject = SubjTxT
If aPath <> "" Then
attachArr = Split(aPath, ";")
For c = 0 To UBound(attachArr)
If attachArr(c) <> "" Then .Attachments.Add attachArr(c)
Next c
End If
Set oAttach = .Attachments.Add("I:\im_brnch\Mass Email Tool v4\Header-Footer Images\Header.jpg")
Set oAttachPA = oAttach.PropertyAccessor
oAttachPA.SetProperty PR_ATTACH_CONTENT_ID, "Header"
oAttachPA.SetProperty PR_ATTACHMENT_HIDDEN, True
Bdy = "<img src = ""cid:Header""> <br> <br> <br> <br>" & Bdy
Set oAttach = .Attachments.Add("I:\im_brnch\Mass Email Tool v4\Header-Footer Images\Footer.jpg")
Set oAttachPA = oAttach.PropertyAccessor
oAttachPA.SetProperty PR_ATTACH_CONTENT_ID, "Footer"
oAttachPA.SetProperty PR_ATTACHMENT_HIDDEN, True
Bdy = Bdy & "<br> <br> <img src = ""cid:Footer"">"
.HTMLBody = makeHTML(Bdy)
.Display
.Save
DoEvents
If autEmailSend Then .Send
End With
Set oAttach = Nothing
Set outMail = Nothing
Set OutApp = Nothing
End Sub
Public Function makeHTML(txt As String) As String
Dim temp As String
temp = Replace(txt, vbLf, "<br>")
temp = "<html><body><font face=""Calibri""><font size = 3>" & temp & "</font></body></html>"
makeHTML = temp
End Function