以下是使用Excel VBA将范围作为带有图片的表格发送到电子邮件正文的解决方法的代码示例:
Sub SendRangeWithImageInBody()
Dim rng As Range
Dim tempFileName As String
Dim outlookApp As Object
Dim outlookMail As Object
' 设置要发送的范围
Set rng = ThisWorkbook.Sheets("Sheet1").Range("A1:C10")
' 将范围复制为图片
rng.CopyPicture xlScreen, xlBitmap
' 保存图片到临时文件
tempFileName = Environ$("temp") & "\" & Format(Now, "dd-mm-yy h-mm-ss") & ".png"
With New Chart
.Paste
.Export Filename:=tempFileName, Filtername:="PNG"
End With
' 创建 Outlook 应用程序对象
Set outlookApp = CreateObject("Outlook.Application")
' 创建新邮件
Set outlookMail = outlookApp.CreateItem(0)
' 设置收件人、主题和正文
With outlookMail
.To = "recipient@example.com"
.Subject = "Range with Image"
.HTMLBody = "<html><body><p>Please see the range with image below:</p>" & _
"<img src='" & tempFileName & "'></body></html>"
' 将图片添加到邮件附件
.Attachments.Add tempFileName
' 显示邮件
.Display
End With
' 清除对象变量
Set rng = Nothing
Set outlookApp = Nothing
Set outlookMail = Nothing
' 删除临时文件
Kill tempFileName
End Sub
请确保在运行此代码之前已在电脑上安装了 Outlook 客户端,并将 recipient@example.com
替换为实际的收件人电子邮件地址。此代码将选择指定的范围,将其复制为图片,并将该图片保存为临时文件,然后将该图片作为 HTML 正文中的图像插入到新的 Outlook 邮件中。该图片也作为邮件的附件添加到邮件中。最后,将显示该邮件。