从Excel中发送自动填充的Outlook电子邮件模板,其中包含多个单元格文本正文和其他文本格式

时间:2018-03-09 14:37:47

标签: excel vba email outlook outlook-vba

我在Outlook中保存了一个电子邮件模板。我每天发送这封电子邮件很多次。我发送的每封电子邮件都是格式,带有粗体彩色文字,公司徽标,以及该收件人的唯一信息。

在excel中生成唯一信息,因此我手动将excel信息复制并粘贴到Outlook模板中。我想弄清楚如何让excel为我自动填充模板,包括主要收件人,cc收件人,主题和附件,以及粘贴到电子邮件正文中的单元格。

我知道通过Microsoft Word中的邮件有一种方式,但我无法弄清楚如何让它完全自动化。然后excel会做所有事情,但忽略文本正文中的所有格式,我无法将其选择文本正文的多个单元格

我甚至不知道从哪里开始。以下是发送Outlook电子邮件的基本VBA。但是,当然,电子邮件正文的范围不起作用

Sub SupplierTestingEmail()

   Dim olApp As Outlook.Application
      Set olApp = CreateObject("Outlook.Application")

        Dim olMail As Outlook.MailItem
        Set olMail = olApp.CreateItem(olMailItem)

        olMail.To = Range("B1")
        olMail.Subject = Range("B2")
        olMail.Body = Range("A1:C5")
        olMail.Display

End Sub

我希望该电子邮件包含以下内容

1)身体的一系列细胞
2)公司标志
3)彩色文字
4)参考细胞
5)附件
6)抄送,我需要CC某人。

1 个答案:

答案 0 :(得分:1)

要在使用Word object model with MailItem.GetInspector Property (Outlook)复制范围后保留原始格式,然后将其粘贴为 wdFormatOriginalFormatting WdRecoveryType Enumeration (Word)

实施例

Option Explicit
Public Sub Example()
' add ref - tool -> references - > Microsoft Outlook XX.X Object Library
    Dim olApp As Outlook.Application
    Set olApp = New Outlook.Application

    Dim Email As Outlook.MailItem
    Set Email = olApp.CreateItem(0)

' add ref - tool -> references - > Microsoft Word XX.X Object Library
    Dim wdDoc As Word.Document '<=========
    Set wdDoc = Email.GetInspector.WordEditor

    Dim Sht As Excel.Worksheet
    Set Sht = ThisWorkbook.Worksheets("Sheet1")

    Dim rng As Range
    Set rng = Sht.Range("A4:H16").SpecialCells(xlCellTypeVisible)
        rng.Copy

    With Email
        .To = Sht.Range("C1")
        .Subject = Sht.Range("B1")
        .Display

         wdDoc.Range.PasteAndFormat Type:=wdFormatOriginalFormatting
    End With

End Sub
  

Excel中

     

enter image description here

           

     

enter image description here