在MailBody中发送Excel表格

Emr*_*mre 1 excel vba sendmail

我正在使用此代码通过 vba 发送电子邮件,但我需要将表格作为正文发送。此代码仅发送一个单元格而不是范围。

如何将 Range("B5:D10") 粘贴为邮件正文中的表格?

Dim OutApp As Object
Dim OutMail As Object

Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)
On Error Resume Next
With OutMail
    .To = Range("B1").Value
    .Cc = Range("B2").Value
    .Bcc = Range("B3").Value
    .Subject = Range("B4").Value
    .Body = Range("B5").Value
    .Send
End With
On Error GoTo 0
Set OutMail = Nothing
Run Code Online (Sandbox Code Playgroud)

谢谢

Mic*_*zyn 5

您可以通过设置HTMLBody而不是Body. 但是,要控制消息的格式,您必须具备 HTML 的基本知识。

其背后的想法如下:您必须将范围内容与 HTML 标签放在一起,如下所示:

Dim rng As Range, cell As Range, HtmlContent As String, i As Long, j As Long
Set rng = Range("B5:D10")
HtmlContent = "<table>"

For i = 5 To rng.Rows.Count + 4
    HtmlContent = HtmlContent & "<tr>"
    For j = 2 To rng.Columns.Count + 2
        HtmlContent = HtmlContent & "<td>" & Cells(i, j).Value & "</td>"
    Next
    HtmlContent = HtmlContent & "</tr>"
Next
HtmlContent = HtmlContent & "</table>"
Run Code Online (Sandbox Code Playgroud)

然后,将此表放入消息中:

With OutMail
    '...
    .HTMLBody = HtmlContent
    '...
End With
Run Code Online (Sandbox Code Playgroud)