在Outlook中粘贴Excel范围

丹尼斯

我正在尝试使用VBA将选定范围从Excel粘贴到Outlook。我希望与所有收件人进行相同的对话。

我已经看到一些代码:Outlook Reply或Email的ReplyAll

我坚持使用此代码(Application.ActiveExplorer.Selection)。

任何想法如何做到这一点?

这是创建新电子邮件而不是回复时的代码:

Sub a()
Dim r As Range
Set r = Range("B1:AC42")
r.Copy

'Paste as picture in sheet and cut immediately
Dim p As Picture
Set p = ActiveSheet.Pictures.Paste
p.Cut



'Open a new mail item
Dim outlookApp As Outlook.Application
Set outlookApp = CreateObject("Outlook.Application")
Dim outMail As Outlook.MailItem
Set outMail = outlookApp.CreateItem(olMailItem)

'Get its Word editor
outMail.Display
Dim wordDoc As Word.Document
Set wordDoc = outMail.GetInspector.WordEditor

With outMail
.BodyFormat = olFormatHTML
  .Display
  '.HTMLBody = "write your email here" & "<br>" & .HTMLBody
  .Subject = ""
  .Attachments.Add ("path")


End With
'Paste picture
wordDoc.Range.Paste

For Each shp In wordDoc.InlineShapes
shp.ScaleHeight = 50 shp.ScaleWidth = 50
 Next

End Sub
小数转

编辑:
我注意到您的问题是由另一个用户编辑的,现在您提到需要将电子邮件作为回信的电子邮件已经消失了。这可能是为了使您的问题更简单,但是现在我的答案没有太大意义了。我的回答还假设您还已经具有插入电子邮件所需的HTML代码。如果不是这种情况,您可能希望了解一下要点,以开始将范围转换为HTML代码。


链接到 问题 是在Outlook VBA上,因此您必须确保以不同的方式声明变量,因为在Excel VBA Application 中将引用Excel应用程序而不是Outlook。

这是您可以执行的操作:

Sub ReplyAllWithTable()
    Dim outlookApp As Outlook.Application
    Set outlookApp = CreateObject("Outlook.Application")
    Dim olItem As Outlook.MailItem
    Dim olReply As MailItem ' ReplyAll

    Dim HtmlTable As String
    HtmlTable = "<table><tr><td>Test</td><td>123</td></tr><tr><td>123</td><td>test</td></tr></table>"

    For Each olItem In outlookApp.ActiveExplorer.Selection
    Set olReply = olItem.ReplyAll
    olReply.HTMLBody = "Here is the table: " & vbCrLf & HtmlTable & vbCrLf & olReply.HTMLBody
    olReply.Display

    'Uncomment next line when you're done with debugging
    'olReply.Send

    Next olItem
End Sub

关于图片的粘贴范围

如果您采用上述代码中的方法,将无法使用复制粘贴方法插入图像。我个人更喜欢设置电子邮件的HTML正文,因为它可以为您提供更多控制权。如果可以使用HTML方法,则可以:

  1. 将您的范围转换为HTML代码并将其插入到电子邮件中(类似于上面代码中的操作);要么

  2. 将范围转换为图像,保存并在HTML邮件正文中插入HTML。

为了实现第二个选项,您可以运行以下代码:

Sub ReplyAllWithTableAsPicture()

    'REFERENCE:
    '- https://excel-macro.tutorialhorizon.com/excel-vba-send-mail-with-embedded-image-in-message-body-from-ms-outlook-using-excel/

    Dim outlookApp As Outlook.Application
    Set outlookApp = CreateObject("Outlook.Application")
    Dim olItem As Outlook.MailItem
    Dim olReply As MailItem ' ReplyAll


    Dim fileName As String
    Dim fileFullName As String
    fileFullName = Environ("temp") & "\Temp.jpg" 'CUSTOMIZABLE (make sure this file can be overwritten at will)
    fileName = Split(fileFullName, "\")(UBound(Split(fileFullName, "\")))

    RangeToImage fileFullName:=fileFullName, rng:=ActiveSheet.Range("B1:AC42") 'CUSTOMIZABLE (choose the range to save as picture)

    For Each olItem In outlookApp.ActiveExplorer.Selection 'if we have only one email, we could use: set olItem = outlookApp.ActiveExplorer.Selection(1)
    Set olReply = olItem.ReplyAll
    olReply.Attachments.Add fileFullName, olByValue, 0
    olReply.HTMLBody = "Here is the table: " & "<br>" & "<img src='cid:" & fileName & "'>" & vbCrLf & olReply.HTMLBody
    olReply.Display

    'Uncomment this line when you're done with debugging
    'olReply.Send

    Next olItem
End Sub

并在模块中添加以下子过程:

Sub RangeToImage(ByVal fileFullName As String, ByRef rng As Range)

    'REFERENCE:
    '- https://analystcave.com/excel-image-vba-save-range-workbook-image/

    Dim tmpChart As Chart, n As Long, shCount As Long, sht As Worksheet, sh As Shape
    Dim pic As Variant

    'Create temporary chart as canvas
    Set sht = rng.Worksheet
    rng.Copy
    sht.Pictures.Paste.Select
    Set sh = sht.Shapes(sht.Shapes.Count)
    Set tmpChart = Charts.Add
    tmpChart.ChartArea.Clear
    tmpChart.Name = "PicChart" & (Rnd() * 10000)
    Set tmpChart = tmpChart.Location(Where:=xlLocationAsObject, Name:=sht.Name)
    tmpChart.ChartArea.Width = sh.Width
    tmpChart.ChartArea.Height = sh.Height
    tmpChart.Parent.Border.LineStyle = 0

    'Paste range as image to chart
    sh.Copy
    tmpChart.ChartArea.Select
    tmpChart.Paste

    'Save chart image to file
    tmpChart.Export fileName:=fileFullName, FilterName:="jpg"

    'Clean up
    sht.Cells(1, 1).Activate
    sht.ChartObjects(sht.ChartObjects.Count).Delete
    sh.Delete

End Sub

说明:

在此ReplyAllWithTableAsPicture过程中,我们基本上执行与第一个代码相同的操作,但是现在我们将图像附加到电子邮件中,但将其“隐藏”,因此我们可以将其包括在电子邮件正文中,而不必将其包含在列表中人们收到电子邮件时的附件数量。为了包括图像,我们使用img带有以“ cid”开头的源标签,允许我们引用“隐藏”附件。

由于图像必须是文件,因此我们使用该RangeToImage过程从提供的范围中生成图像文件。当前,该文件将始终以相同的名称保存在临时目录中,这意味着该文件将被覆盖。如果要保留这些图像文件的副本,请随时更改名称或在名称中添加日期。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Excel范围到PowerPoint-粘贴问题

来自分类Dev

使用Outlook VBA从Excel文件复制/粘贴。

来自分类Dev

Excel VBA:发送的Outlook电子邮件不包含粘贴的范围

来自分类Dev

在Excel VBA模块中访问粘贴的图片

来自分类Dev

Excel 2010将范围和图片粘贴到Outlook中

来自分类Dev

复制Excel范围,并在VBScript中仅将值(pasteSpecial)粘贴为带跳空白

来自分类Dev

将Excel范围作为图片粘贴到电子邮件中

来自分类Dev

在Excel C#中粘贴值

来自分类Dev

Excel VBA复制并粘贴整个范围与条件?

来自分类Dev

在excel中自动复制和粘贴特定范围的最佳方法是什么?

来自分类Dev

在VBA Excel中多次将一个范围复制并粘贴到另一个范围的代码

来自分类Dev

Python中的Excel复制粘贴方式

来自分类Dev

动态范围无法正确粘贴到Excel VBA中

来自分类Dev

Excel 2010中缺少粘贴特殊选项

来自分类Dev

在VBA Excel中复制粘贴范围

来自分类Dev

在Outlook中粘贴Excel范围

来自分类Dev

在R中粘贴特定范围的矩阵列

来自分类Dev

VBA代码将Excel范围复制并粘贴到Outlook中

来自分类Dev

在Excel中粘贴精确值

来自分类Dev

Mac版Outlook 2016中的粘贴和“不匹配”样式

来自分类Dev

在VBA和Excel中复制粘贴具有随机范围的图片

来自分类Dev

将Excel图表粘贴到刚粘贴了使用VBA的范围的Powerpoint中

来自分类Dev

使用VBA将动态范围复制并粘贴到Excel中的新工作表

来自分类Dev

VBA - 命名 Excel 表格范围并粘贴到工作表 2

来自分类Dev

Excel VBA - 遍历文件夹中的文件,复制范围,粘贴到此工作簿中

来自分类Dev

使用 Selenium + VBA 在浏览器中粘贴 Excel 范围

来自分类Dev

Excel VBA:复制/粘贴范围

来自分类Dev

Excel vba - 如何在范围变化时复制/粘贴

来自分类Dev

如何在 Excel 中复制和粘贴动态范围?

Related 相关文章

  1. 1

    Excel范围到PowerPoint-粘贴问题

  2. 2

    使用Outlook VBA从Excel文件复制/粘贴。

  3. 3

    Excel VBA:发送的Outlook电子邮件不包含粘贴的范围

  4. 4

    在Excel VBA模块中访问粘贴的图片

  5. 5

    Excel 2010将范围和图片粘贴到Outlook中

  6. 6

    复制Excel范围,并在VBScript中仅将值(pasteSpecial)粘贴为带跳空白

  7. 7

    将Excel范围作为图片粘贴到电子邮件中

  8. 8

    在Excel C#中粘贴值

  9. 9

    Excel VBA复制并粘贴整个范围与条件?

  10. 10

    在excel中自动复制和粘贴特定范围的最佳方法是什么?

  11. 11

    在VBA Excel中多次将一个范围复制并粘贴到另一个范围的代码

  12. 12

    Python中的Excel复制粘贴方式

  13. 13

    动态范围无法正确粘贴到Excel VBA中

  14. 14

    Excel 2010中缺少粘贴特殊选项

  15. 15

    在VBA Excel中复制粘贴范围

  16. 16

    在Outlook中粘贴Excel范围

  17. 17

    在R中粘贴特定范围的矩阵列

  18. 18

    VBA代码将Excel范围复制并粘贴到Outlook中

  19. 19

    在Excel中粘贴精确值

  20. 20

    Mac版Outlook 2016中的粘贴和“不匹配”样式

  21. 21

    在VBA和Excel中复制粘贴具有随机范围的图片

  22. 22

    将Excel图表粘贴到刚粘贴了使用VBA的范围的Powerpoint中

  23. 23

    使用VBA将动态范围复制并粘贴到Excel中的新工作表

  24. 24

    VBA - 命名 Excel 表格范围并粘贴到工作表 2

  25. 25

    Excel VBA - 遍历文件夹中的文件,复制范围,粘贴到此工作簿中

  26. 26

    使用 Selenium + VBA 在浏览器中粘贴 Excel 范围

  27. 27

    Excel VBA:复制/粘贴范围

  28. 28

    Excel vba - 如何在范围变化时复制/粘贴

  29. 29

    如何在 Excel 中复制和粘贴动态范围?

热门标签

归档