正文中粘贴图表和文本的 VBA 电子邮件

Posted

技术标签:

【中文标题】正文中粘贴图表和文本的 VBA 电子邮件【英文标题】:VBA Email with pasted chart and text in body 【发布时间】:2015-09-05 19:03:58 【问题描述】:

以下代码的目标是将所选图表粘贴到我的文本下方的电子邮件正文中。但是,它继续将其粘贴在我的文本上方。如何更改它以使其粘贴在下面?谢谢!

Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)
With OutMail
    .CC = "xyz@anc.com"
    .BCC = "abc@xyz.com"
    .Subject = "Test"
    .Body = "Dear" & "Macro "

    ActiveSheet.Range("P36:X46").Copy
    Set wEditor = OutApp.ActiveInspector.WordEditor

    wEditor.Application.Selection.Paste

.display

【问题讨论】:

【参考方案1】:

更改选择的开始和结束。添加额外的换行符也可能是一个好主意。您还应该使用 MailItem.GetInspector 而不是 Application.ActiveInspector,因为该消息尚未显示。

Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)
With OutMail
    .CC = "xyz@anc.com"
    .BCC = "abc@xyz.com"
    .Subject = "Test"
    .Body = "Dear" & "Macro " & vbCrLf

    ActiveSheet.Range("P36:X46").Copy
    set vInspector = OutMail.GetInspector
    Set wEditor = vInspector.WordEditor

    wEditor.Application.Selection.Start = Len(.Body)
    wEditor.Application.Selection.End = wEditor.Application.Selection.Start

    wEditor.Application.Selection.Paste

.display

【讨论】:

感谢@Dmitry Streblechenko!是否还有一种方法可以将其插入电子邮件正文的中间?假设我在“宏”之后添加了 4 或 5 个空格,然后写了更多文本。但我希望将图表粘贴在“宏”和结尾之间。 当然,正确计算偏移量即可。上面的脚本使用了消息体的长度,你需要一些其他的位置。例如。如果要在消息正文中插入字符串“Some text”的前面,则需要使用StrPost()计算位置并适当设置选择开始。 没关系。我用 Instr 弄明白了。感谢大家的帮助! 在邮件的 html 正文之间放置图表的好方法

以上是关于正文中粘贴图表和文本的 VBA 电子邮件的主要内容,如果未能解决你的问题,请参考以下文章

使用 VBA 宏选择和复制 Outlook 电子邮件正文

VBA 在 Outlook 中粘贴带有图表的特定 excel 范围

从excel范围vba添加邮件正文

在 Excel 中使用 VBA,如何在 Outlook 中粘贴表格然后将表格转换为文本?

根据电子表格中的详细信息自动发送电子邮件,并将表格从电子表格复制/粘贴到相应的电子邮件中

Excel中的VBA创建带有表格和签名的电子邮件