在Outlook中嵌入图像-带有附件的287运行时错误

时间:2018-07-09 18:20:10

标签: html excel excel-vba outlook-vba outlook-2010

我正在尝试在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

0 个答案:

没有答案