Vba 通过excel发送带有嵌入图像的电子邮件

Vba 通过excel发送带有嵌入图像的电子邮件,vba,excel,Vba,Excel,我通过excel发送的电子邮件不会在接收端显示嵌入的图像。但是,嵌入的图像确实显示在我的端部。我猜路径与我的桌面关联 如何获得要显示的图像?在解决问题上有困难。我的代码如下: Sub EmailDailyFlow() Dim mainWB As Workbook Set otlApp = CreateObject("Outlook.Application") Set olMail = otlApp.CreateItem(olMailItem) Set mainWB = ActiveWorkb

我通过excel发送的电子邮件不会在接收端显示嵌入的图像。但是,嵌入的图像确实显示在我的端部。我猜路径与我的桌面关联

如何获得要显示的图像?在解决问题上有困难。我的代码如下:

Sub EmailDailyFlow()
Dim mainWB As Workbook


Set otlApp = CreateObject("Outlook.Application")
Set olMail = otlApp.CreateItem(olMailItem)
Set mainWB = ActiveWorkbook


With olMail
    .To = "email@gmail.com"
    .Cc = ""
    .Subject = Format(Date - 1, "M.dd.yyyy") & " " & "MF & VIT Daily Fund Flow"
    .HTMLBody = "<html><body style='font-family: Times New Roman, Times, serif; font-size: 16px;'>" & _
            "<p>Please see below.</p>" & _
            "<p><u><b>Volatility:</u></b></p>" & _
            "<img src='C:\Users\Name\Desktop\MF-VIT Daily Fund Flow\images\MF.png'>" & _
            "<p><u><b>Muni:</u></b></p>" & _
            "<img src='C:\Users\Name\Desktop\MF-VIT Daily Fund Flow\images\MUNI.png'>" & _
            "<p><u><b>AFC:</u></b></p>" & _
            "<img src='C:\Users\Name\Desktop\MF-VIT Daily Fund Flow\images\AFC.png'>" & _
            "<p><u><b>AFT:</u></b></p>" & _
            "<img src='C:\Users\Name\Desktop\MF-VIT Daily Fund Flow\images\AFT.png'>" & _
            "<p><u><b>VIT:</u></b></p>" & _
            "<img src='C:\Users\Name\Desktop\MF-VIT Daily Fund Flow\images\VIT.png'>" & _
            "<p>Thank you,</p>" & _
            "</body></html>"
.Send

End With
MsgBox ("Daily flow emails sent!")
End Sub`
Sub-EmailDailyFlow()
将主WB设置为工作簿
设置otlApp=CreateObject(“Outlook.Application”)
设置olMail=otlApp.CreateItem(olMailItem)
设置mainWB=ActiveWorkbook
与奥尔梅尔
.To=”email@gmail.com"
.Cc=“”
.Subject=格式(日期-1,“年月日”)&“MF&VIT每日资金流”
.HTMLBody=”“&_
“请参见下文。

”&_ “波动性:

”&_ "" & _ “市政:

”&_ "" & _ “AFC:

”&_ "" & _ “船尾:

”&_ "" & _ “VIT:

”&_ "" & _ “谢谢,

”&_ "" .发送 以 MsgBox(“发送的每日流量电子邮件!”) 端接头`
试试这段代码。很久以前从某个网站上拍摄的,但仍然很有魅力。
想法是将图像附加到hid-den Manner中,然后将其添加到Html正文中的using image name中

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 更新:
我添加了另一个函数来检索图像的宽度和高度。我还更新了现有的子文件以合并图像大小

Sub EmailDailyFlow()
    Dim SendID
    Dim CCID
    Dim Subject
    Dim stdPic As StdPicture
    Dim imageSize As String

    Dim strPathImg1 As String
    Dim strFileImg1 As String
    Dim lngWidthImg1 As Long
    Dim lngHeightImg1 As Long

    Dim strPathImg2 As String
    Dim strFileImg2 As String
    Dim lngWidthImg2 As Long
    Dim lngHeightImg2 As Long

    Dim olMail As MailItem  'REQUIRES MICROSOFT OBJECT OUTLOOK LIBRARY REFERENCE

    strPathImg1 = "C:\Users\Name\Desktop\MF-VIT Daily Fund Flow\images"
    strFileImg1 = "MF.png"
    imageSize = GetImageSize(strPathImg1, strFileImg1)
    lngWidthImg1 = CLng(Split(imageSize, ":")(0))
    lngHeightImg1 = CLng(Split(imageSize, ":")(1))

    strPathImg2 = "C:\Users\Name\Desktop\MF-VIT Daily Fund Flow\images"
    strFileImg2 = "MUNI.png"
    imageSize = GetImageSize(strPathImg2, strFileImg2)
    lngWidthImg2 = CLng(Split(imageSize, ":")(0))
    lngHeightImg2 = CLng(Split(imageSize, ":")(1))

    Set otlApp = CreateObject("Outlook.Application")
    Set olMail = otlApp.CreateItem(olMailItem)

    SendID = "email@gmail.com"
    CCID = ""
    Subject = Format(Date - 1, "M.dd.yyyy") & " " & "MF & VIT Daily Fund Flow"

    With olMail
        .To = SendID
        If CCID <> "" Then
          .CC = CCID
        End If
        .Subject = Subject
        'ADD THE IMAGE IN HIDDEN MANNER, POSITION AT 0 WILL MAKE IT HIDDEN
        .Attachments.Add strPathImg1 & "\" & strFileImg1, olByValue, 0
        .Attachments.Add strPathImg2 & "\" & strFileImg2, olByValue, 0

        'NOW ADD IT TO THE HTML BODY USING IMAGE NAME
        'CHANGE THE SRC PROPERTY TO 'cid:your image filename'
        'IT WILL BE CHANGED TO THE CORRECT CID WHEN ITS SENT.
        .HTMLBody = "<html><body style='font-family: Times New Roman, Times, serif; font-size: 16px;'>" & _
                    "<p>Please see below.</p>" & _
                    "<p><u><b>Volatility:</u></b></p>" & _
                    "<img src='cid:" & strFileImg1 & "' width='" & lngWidthImg1 & "' height='" & lngHeightImg1 & "'>" & _
                    "<p><u><b>Muni:</u></b></p>" & _
                    "<img src='cid:" & strFileImg2 & "' width='" & lngWidthImg2 & "' height='" & lngHeightImg2 & "'>" & _
                    "<p><u><b>AFC:</u></b></p>" & _
                    "<p>Thank you,</p>" & _
                    "</body></html>"
        '.Display 'UNCOMMENT ME IF YOU WANT TO DISPLAY THE EMAIL
        .Send
    End With

    MsgBox ("Daily flow emails sent!")
End Sub

Function GetImageSize(filePath As String, fileName As String) As String
    'THIS WILL RETURN IMAGE SIZE IN "xyz:xyz" STRING FORMAT
    Dim strImageDimensions As String
    Dim objShell As Object
    Dim objFolder As Object
    Dim objFile As Object

    Set objShell = CreateObject("Shell.Application")
    Set objFolder = objShell.Namespace((filePath))
    Set objFile = objFolder.ParseName(fileName)

    strImageDimensions = objFile.ExtendedProperty("Dimensions")
    strImageDimensions = Replace(Mid(strImageDimensions, 2, Len(strImageDimensions) - 2), " x ", ":")
    GetImageSize = strImageDimensions

    Set objFile = Nothing: Set objFolder = Nothing: Set objShell = Nothing
End Function
Sub-EmailDailyFlow()
暗森迪
暗淡的CCID
模糊主题
作为stdppicture的Dim stdPic
将图像大小设置为字符串
作为字符串的Dim strPathImg1
作为字符串的Dim strFileImg1
变暗lngWidthImg1的长度为
昏暗的灯光与长的灯光一样暗
Dim strPathImg2作为字符串
作为字符串的Dim strFileImg2
变暗lngWidthImg2的长度为
昏暗的灯光和长的一样
Dim olMail As MailItem“需要MICROSOFT对象OUTLOOK库引用
strPathImg1=“C:\Users\Name\Desktop\MF-VIT每日资金流\images”
strFileImg1=“MF.png”
imageSize=GetImageSize(strPathImg1,strFileImg1)
lngWidthImg1=CLng(分割(图像大小:“:”)(0))
lngHeightImg1=CLng(分割(图像大小“:”)(1))
strPathImg2=“C:\Users\Name\Desktop\MF-VIT每日资金流\images”
strFileImg2=“MUNI.png”
imageSize=GetImageSize(strPathImg2,strFileImg2)
lngWidthImg2=CLng(分割(图像大小:“:”)(0))
lngHeightImg2=CLng(分割(图像大小:“:”)(1))
设置otlApp=CreateObject(“Outlook.Application”)
设置olMail=otlApp.CreateItem(olMailItem)
SendID=”email@gmail.com"
CCID=“”
主题=格式(日期-1,“年月日”)&“MF&VIT每日资金流”
与奥尔梅尔
.To=SendID
如果CCID为“”,则
.CC=CCID
如果结束
.主语
'以隐藏方式添加图像,位于0的位置将使其隐藏
.Attachments.Add strPathImg1&“\”&strFileImg1,olByValue,0
.Attachments.Add strPathImg2&“\”&strFileImg2,olByValue,0
'现在使用图像名称将其添加到HTML正文中
'将SRC属性更改为'cid:your image filename'
'发送时,它将更改为正确的CID。
.HTMLBody=”“&_
“请参见下文。

”&_ “波动性:

”&_ "" & _ “市政:

”&_ "" & _ “AFC:

”&_ “谢谢,

”&_ "" “.Display”如果要显示电子邮件,请取消对我的注释 .发送 以 MsgBox(“发送的每日流量电子邮件!”) 端接头 函数GetImageSize(文件路径为字符串,文件名为字符串)为字符串 '这将以“xyz:xyz”字符串格式返回图像大小 将尺寸标注为字符串 Dim objShell作为对象 将文件夹变暗为对象 Dim objFile作为对象 设置objShell=CreateObject(“Shell.Application”) 设置objFolder=objShell.Namespace((文件路径)) 设置objFile=objFolder.ParseName(文件名) strImageDimensions=objFile.ExtendedProperty(“维度”) strImageDimensions=替换(中间(strImageDimensions,2,Len(strImageDimensions)-2),“x”,“:”) GetImageSize=strImageDimensions Set objFile=Nothing:Set objFolder=Nothing:Set objShell=Nothing 端函数
子邮件每日流量()
Dim oApp作为Outlook.Application
以邮件形式发送邮件
将文件附加为Outlook。附件
将1作为Outlook。附件
将第2页作为Outlook。附件
将第3页作为Outlook。附件
将第4页作为Outlook。附件
将第5页作为Outlook。附件
将olkPA设置为Outlook.PropertyAccessor
Const PR_ATTACH_CONTENT_ID=”http://schemas.microsoft.com/mapi/proptag/0x3712001F“

Set-oApp=CreateObject(“Outlook.Application”)
设置oEmail=oApp.CreateItem(olMailItem)
Set colAttach=oEmail.Attachments
设置oAttach1=colAttach.Add(“C:\Users\Name\Desktop\MF-VIT Daily Fund Flow\images\MF.png”)
设置oAttach2=colAttach.Add(“C:\Users\Name\Desktop\MF-VIT Daily Fund Flow\images\Muni.png”)
设置oAttach3=colAttach.Add(“C:\Users\Name\Desktop\MF-VIT Daily Fund Flow\images\AFC.png”)
设置oAttach4=colAttach.Add(“C:\Users\Name\Desktop\MF-VIT Daily Fund Flow\images\AFT.png”)
设置oAttach5=colAttach.Add(“C:\Users\Name\Desktop\MF-VIT Daily Fund Flow\images\VIT.png”)
设置olkPA1=oAttach1.PropertyAccessor
设置olkPA2=oAttach2.PropertyAccessor
设置olkPA3=oAttach3.PropertyAccessor
设置olkPA4=oAttach4.PropertyAccessor
设置olkPA5=oAttach5.PropertyAccessor
olkPA1.SetProperty PR_ATTACH_CONTENT_ID,“MF.png”
olkPA2.SetProperty PR_ATTACH_CONTENT_ID,“MUNI.png”
olkPA3.SetProperty PR_ATTACH_CONTENT_ID,“AFC.png”
olkPA4.SetProperty PR_ATTACH_CONTENT_ID,“AFT.png”
olkPA5.SetProperty PR_ATTACH_CONTENT_ID,“VIT.png”
oEmail.closeolsave
oEmail.HTMLBody=“请参见下文。

”&_ "" & _
Set oApp = CreateObject("Outlook.Application")
Set oEmail = oApp.CreateItem(olMailItem)

Set colAttach = oEmail.Attachments
Set oAttach1 = colAttach.Add("C:\Users\Name\Desktop\MF-VIT Daily Fund Flow\images\MF.png")
Set oAttach2 = colAttach.Add("C:\Users\Name\Desktop\MF-VIT Daily Fund Flow\images\Muni.png")
Set oAttach3 = colAttach.Add("C:\Users\Name\Desktop\MF-VIT Daily Fund Flow\images\AFC.png")
Set oAttach4 = colAttach.Add("C:\Users\Name\Desktop\MF-VIT Daily Fund Flow\images\AFT.png")
Set oAttach5 = colAttach.Add("C:\Users\Name\Desktop\MF-VIT Daily Fund Flow\images\VIT.png")
Set olkPA1 = oAttach1.PropertyAccessor
Set olkPA2 = oAttach2.PropertyAccessor
Set olkPA3 = oAttach3.PropertyAccessor
Set olkPA4 = oAttach4.PropertyAccessor
Set olkPA5 = oAttach5.PropertyAccessor

olkPA1.SetProperty PR_ATTACH_CONTENT_ID, "MF.png"
olkPA2.SetProperty PR_ATTACH_CONTENT_ID, "MUNI.png"
olkPA3.SetProperty PR_ATTACH_CONTENT_ID, "AFC.png"
olkPA4.SetProperty PR_ATTACH_CONTENT_ID, "AFT.png"
olkPA5.SetProperty PR_ATTACH_CONTENT_ID, "VIT.png"

oEmail.Close olSave

oEmail.HTMLBody = "<body style='font-family: Times New Roman, Times, serif; font-size: 16px;'><p>Please see below.</p>" & _
                    "<img src='cid:MF.png'>" & _
                    "<p><u><b>Muni:</u></b></p>" & _
                    "<img src='cid:MUNI.png'>" & _
                    "<p><u><b>afcCore:</u></b></p>" & _
                    "<img src='cid:AFC.png'>" & _
                    "<p><u><b>aft:</u></b></p>" & _
                    "<img src='cid:AFT.png'>" & _
                    "<p><u><b>VIT:</u></b></p>" & _
                    "<img src='cid:VIT.png'>" & _
                    "<p>Thank you,</p>" & _

                    "</body>"

oEmail.Save
oEmail.To = "email@email.com"
oEmail.CC = ""
oEmail.Subject = Format(Date - 1, "M.dd.yyyy") & " " & "MF & VIT Daily Fund Flow"
oEmail.Send

Set oEmail = Nothing
Set colAttach = Nothing
Set oAttach = Nothing
Set oApp = Nothing