粘贴在outlook电子邮件正文上的图片不会显示



我使用下面的代码从文件中复制一个范围,并将其粘贴为电子邮件上的图片,但有一个问题:如果在.send之前不使用.display,图片将不会显示给接收者。有人知道这方面的办法吗?只是为了避免前景窗口在屏幕上闪烁。

Sub sendMail()
Dim olApp As Object
Dim NewMail As Object
Dim ChartName As String
Dim imgPath As String
Set olApp = CreateObject("Outlook.Application")
Application.ScreenUpdating = False
Application.DisplayAlerts = False
tmpImageName = VBA.Environ$("temp") & "tempo.jpg"
Workbooks.Open "C:FilePathFile.xlsm"
Set RangeToSend = Workbooks("File.xlsm").Sheets(Name).Range(" ")
RangeToSend.CopyPicture Appearance:=xlScreen, Format:=xlPicture
Set sht = Sheets.Add
sht.Shapes.AddChart
sht.Shapes.Item(1).Select
Set objChart = ActiveChart
With objChart
.ChartArea.Height = RangeToSend.Height
.ChartArea.Width = RangeToSend.Width
.ChartArea.Fill.Visible = msoFalse
.ChartArea.Border.LineStyle = xlLineStyleNone
.Paste
.Export Filename:=tmpImageName, FilterName:="JPG"
End With
sht.Delete
Workbooks("File.xlsm").Close
Set NewMail = olApp.CreateItem(0)
With NewMail
.Subject = "Latest performance report" ' Replace this with your Subject
.To = "email@email.com" ' Replace it with your actual email
.HTMLBody = "<span LANG=EN>" _
& "<p class=style2><span LANG=EN><font FACE=Calibri SIZE=3>" _
& "Hello, this is the data range that you want:<br> " _
& "<br>" _
& "<img src=" & "'" & tmpImageName & "'/>" _
& "<br>" _
& "<img src=" & "'" & tmpImageName2 & "'/>" _
& "<br>" _
& "<br>Best Regards!</font></span>"
.Display
.Send
Set olApp = Nothing
Set NewMail = Nothing
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End With

End Sub

看起来您正在将Excel中捕获的图片保存到磁盘中。然后你引用了一个新创建的项目主体中的图像。但是图像源仍然指向磁盘上的文件。因此,收件人将永远无法正确显示。

相反,您需要附加一个文件,然后在消息正文中添加一个引用。

Const PR_ATTACH_CONTENT_ID = "http://schemas.microsoft.com/mapi/proptag/0x3712001E"        
Const PR_ATTACHMENT_HIDDEN = "http://schemas.microsoft.com/mapi/proptag/0x7FFE000B" 
...
Set colAttach = mail.Attachments        
Set l_Attach = colAttach.Add(path_to_the_file)            
Set oPA = l_Attach.PropertyAccessor            
oPA.SetProperty PR_ATTACH_CONTENT_ID, "itemID"            
oPA.SetProperty PR_ATTACHMENT_HIDDEN, True        

然后您可以通过以下方式修改消息正文:

.HTMLBody = "<span LANG=EN>" _
& "<p class=style2><span LANG=EN><font FACE=Calibri SIZE=3>" _
& "Hello, this is the data range that you want:<br> " _
& "<br>" _
& "<img src='cid:itemID'/>" _
& "<br>" _
& "<br>Best Regards!</font></span>"
.Send

最新更新