【问题标题】:Copy Excel range as picture to Outlook mail under text in body将 Excel 范围作为图片复制到正文中文本下的 Outlook 邮件
【发布时间】:2017-03-14 13:42:37
【问题描述】:

我想从受保护的 Excel 工作表中复制一个范围并将其作为图片粘贴到 Outlook 中。

我的代码是先粘贴文本然后是图片,但同时删除文本。

如何将图片粘贴到文字下方。

Sub Send_Email()
   
   Dim r As Range
   Set r = Range("NR7:OD39")
   
   Dim outlookApp As Outlook.Application
   Set outlookApp = CreateObject("Outlook.Application")
   
   Dim OutMail As Outlook.MailItem
   Set OutMail = outlookApp.CreateItem(olMailItem)
    
   Dim StrFileName As String
    
   Application.DisplayAlerts = False
   Application.ScreenUpdating = False
  
   Sheets("table1").Select
   ActiveSheet.Unprotect Password:="blabla"

   ActiveSheet.Outline.ShowLevels RowLevels:=8, ColumnLevels:=8

   r.Select
   r.Copy
    
   OutMail.Display
   
   Dim Email As Word.Document
   Set Email = OutMail.GetInspector.WordEditor
    
   With OutMail

      .To = "Name.surname@amazon.com"
      .CC = "Surname.Name@amazon.com"
      .Subject = "Subject"
      .Body = "Hi everybody," & vbNewLine & "actual Status"
      .Display
      
   End With
      
   Email.Range.PasteAndFormat wdChartPicture
   
   ActiveSheet.Outline.ShowLevels RowLevels:=1, ColumnLevels:=1
   ActiveSheet.Protect Password:="blabla"

End Sub

【问题讨论】:

  • 不是 Outlook 用户,也不是在我的计算机上,而是 Email.Range.PasteAndFormat wdChartPicture 使图片成为主体。因此,您可能需要将文字和图片添加到电子邮件中,然后将电子邮件设置为正文。现在不能更精确,但我希望这会有所帮助。

标签: excel image vba outlook range


【解决方案1】:

从这一行开始

Set Email = OutMail.GetInspector.WordEditor

应该这样做:

Dim ran as Word.Range
    Set Email = OutMail.GetInspector.WordEditor

       With OutMail

          .To = "Name.surname@amazon.com"
          .cc = "Surname.Name@amazon.com"
          .Subject = "Subject"
          .Body = "Hi everybody," & vbNewLine & "actual Status"
          .Display

       End With
    Email.Range.InsertAfter vbCrLf
    Set ran = Email.Range(Email.Content.End - 1, Email.Content.End - 1)
    ran.PasteAndFormat wdChartPicture

【讨论】:

  • 这行给了我错误:Set r = Email.Range(Email.Content.End - 1, Email.Content.End - 1)
  • 糟糕,抱歉。你已经定义了一个r,它被定义为一个Excel.Range。查看更改的代码。
  • 感谢 LocEngineer,它工作正常。虽然,图片将文字分开。如您所见,我有两行文本,如何将其粘贴在文本之后。
  • 有趣。如果该行没有以换行符结束,则锚点似乎放在该行的开头,就像在这种情况下一样。不过只需要稍作修改,请参见上面的编辑代码。 P.S:如果文字和图片之间的间距太大,不适合您的口味,请改用.InsertAfter vbLf
猜你喜欢
  • 2012-12-04
  • 2023-03-25
  • 2022-08-13
  • 2017-07-05
  • 2019-08-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多