在outlook邮件体中嵌入图片excel vba

Roh*_*han 8 excel outlook vba excel-vba

我试图将工作表中的范围作为Outlook邮件正文中的图像嵌入.它正确保存图片,但我只在Outlook邮件正文中看到空白图片.我在这做错了什么?

Sub View_Email()

    tName = Trim(MAIN.Range("tEmail"))

    If Not tName Like "*@*.*" Then MsgBox "Invalid Email address": Exit Sub

    Set OutApp = CreateObject("Outlook.Application")
    Set OutMail = OutApp.CreateItem(0)

    'File path/name of the gif file
    Fname = ThisWorkbook.Path & "\Claims.jpg"

    Set oCht = Charts.Add

    STAT.Range("A3:G26").CopyPicture xlScreen, xlBitmap
    With oCht
        .Paste
        .Export Filename:=Fname, Filtername:="JPG"
        '.Delete
    End With

    On Error Resume Next
    With OutMail
        .To = tName
        .CC = ""
        .BCC = ""
        .Subject = STAT.Range("C1").Value
        .HTMLBody = "<html><p>Summary of Claim Status.</p>" & _
                    "<img src=" & Fname & "' height=520 width=750>"
        .display
        '.Send   'or use .Display
    End With
    On Error GoTo 0

    'Delete the gif file
    'Kill Fname

    Set OutMail = Nothing
    Set OutApp = Nothing
End Sub
Run Code Online (Sandbox Code Playgroud)

Sid*_*out 11

您需要添加图像并将其隐藏.该职位0将添加并隐藏它.

.Attachments.Add Fname, 1, 0
Run Code Online (Sandbox Code Playgroud)

1是Outlook常量olByValue

添加图像后,您必须使用"cid:FILENAME.jpg"如下所示.

试试这个

With OutMail
    .To = tName
    .CC = ""
    .BCC = ""
    .Subject = STAT.Range("C1").Value
    .Attachments.Add Fname, 1, 0
    .HTMLBody = "<html><p>Summary of Claim Status.</p>" & _
                "<img src=""cid:Claims.jpg""height=520 width=750>"
    .Display
End With
Run Code Online (Sandbox Code Playgroud)

截图

在此输入图像描述

  • @hammythepig实际上,你可以,但你只需要[编码](https://www.w3schools.com/TAGS/ref_urlencode.asp)你的URL来处理文件名或路径中的空格。因此,要使“文件名”有效,应将其编码为“File%20Name”。 (2认同)