从Excel发送自动填充的Outlook电子邮件模板,其中包含多个单元格文本正文和其他文本格式
我在Outlook中保存了一个电子邮件模板。我每天发很多次这封邮件。我发送的每封电子邮件都格式为粗体彩色文本、公司徽标以及收件人的唯一信息 唯一的信息是在excel中生成的,因此我一直在手动将excel信息复制并粘贴到Outlook模板中 我想找到一种方法让excel为我自动填充模板,包括主收件人、抄送收件人、主题和附件,以及粘贴到电子邮件正文中的单元格 我知道Microsoft Word中有一种邮件处理方法,但我不知道如何使其完全自动化。然后excel将执行所有操作,但它会忽略文本体中的所有格式,我无法让它为文本体选择多个单元格 我甚至不知道从哪里开始。下面是在outlook上发送电子邮件的基本VBA。但当然,电子邮件正文的范围不起作用从Excel发送自动填充的Outlook电子邮件模板,其中包含多个单元格文本正文和其他文本格式,excel,vba,email,outlook,Excel,Vba,Email,Outlook,我在Outlook中保存了一个电子邮件模板。我每天发很多次这封邮件。我发送的每封电子邮件都格式为粗体彩色文本、公司徽标以及收件人的唯一信息 唯一的信息是在excel中生成的,因此我一直在手动将excel信息复制并粘贴到Outlook模板中 我想找到一种方法让excel为我自动填充模板,包括主收件人、抄送收件人、主题和附件,以及粘贴到电子邮件正文中的单元格 我知道Microsoft Word中有一种邮件处理方法,但我不知道如何使其完全自动化。然后excel将执行所有操作,但它会忽略文本体中的所有格
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) 复印件,我需要抄送某人
要在复制区域后保留原始格式,请使用,然后将其粘贴为
wdformatoriginalformat
范例
选项显式
公共子示例()
'添加引用-工具->引用->Microsoft Outlook XX.X对象库
Dim olApp作为Outlook.Application
Set olApp=newoutlook.Application
将电子邮件设置为Outlook.MailItem
设置Email=olApp.CreateItem(0)
'添加引用-工具->引用->Microsoft Word XX.X对象库
Dim wdDoc As Word.Document“对于多个单元格部分,为什么不循环遍历它们并生成一个字符串?使用HTMLBody
而不是Body
是否有帮助?HTMLBody仍然给出了一个错误。我不知道如何循环它们并构建一个字符串。
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