在Outlook电子邮件

时间:2018-04-11 09:55:44

标签: vba excel-vba email outlook outlook-vba

我正在尝试在Excel 2016中使用电子邮件正文中的表格在Outlook 2016中发送电子邮件 我研究过Stack Overflow以及其他网站。我发现HTML部分令人困惑。

以下是我编写的代码,用于发送电子邮件。代码有效,但我需要用表替换.HTMLBody = "Hello World"

Sub Send_mail()

Dim outlookApp As Outlook.Application
Dim outlookMail As Outlook.MailItem

Set outlookApp = New Outlook.Application
Set outlookMail = outlookApp.CreateItem(olMailItem)

With outlookMail
    .To = "recipient@mail.com"
    .CC = ""
    .BCC = ""
    .Subject = "TEST123"
    .BodyFormat = olFormatHTML
    .HTMLBody = "Hello World"
    .Send
End With

Set outlookMail = Nothing
Set outlookApp = Nothing

End Sub

要插入电子邮件正文中的表格包含A,B,C和D列 数据总是从第2行开始,但包含最后数据的行必须是动态的 该表总是相当小 - 最多20行ish。

我想以下可能会做到这一点? 找到最后填充的行,然后循环以遍历2和最后一个填充行之间的每一行,并将其转换为HTML格式并将其存储为字符串。然后将这些字符串连接成一个最终字符串,放在电子邮件正文中。

我看过Ron de Bruin的指南,但我想在不创建临时文件或使用非Microsoft工具的情况下实现这一目标。该宏将拥有来自专业公司的多个用户,并且需要防弹。我担心如果公司的共享文件夹结构发生变化,保存临时文件并删除它们可能会导致可怕的错误。

1 个答案:

答案 0 :(得分:1)

要从列A2复制到列D /或列4最后使用的范围,示例将是

With ThisWorkbook.Worksheets("Sheet1")    
    Dim rng As Range
    Set rng = .Range("$A$2:" & .Cells( _
                       .Rows.Count, 4) _
                       .End(xlUp).Address)
    Debug.Print rng.Address ' Print on immediate Window
    rng.CopyPicture Appearance:=xlScreen, Format:=xlPicture
End With
           

<强> See Copy Excel range as Picture to Outlook