我在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某人。
答案 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中
观