我在Outlook中使用VBA来调用电子邮件模板。我希望 VBA 填充"发件人"、"收件人"、"抄送"字段。
VBA 打开模板并创建新的电子邮件,但"发件人"、"收件人"和"抄送"字段为空。
Sub Step_1()
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(olMailItem)
Set msg = Application.CreateItemFromTemplate("C:MyfolderTemplatesAction Required documents needed.oft")
With OutMail
.SentOnBehalfOfName = "homebase@gmail.com"
.To = "Jane.Doe@customer.com"
.CC = "homebase@gmail.com"
msg.Display
End With
On Error GoTo 0
Set OutMail = Nothing
Set OutApp = Nothing
End Sub
我的理解,有两种方法:
- 使用CreateItem方法创建默认项
- 使用CreateItemFromTemplate方法,以便您可以基于模板创建项目
让我们从第一种方法开始。语法如下:expression.CreateItem(ItemType)
,其中expression
返回Application
对象,ItemType
是必需参数(您可以选择:olContactItem
、olDistributionItem
、olMailItem
等(。因此,您可以像这样创建一封新电子邮件:
Sub email_option1()
Dim msg As MailItem
Set msg = Application.CreateItem(ItemType:=olMailItem)
With msg
.To = 'recipient
.CC = 'CCs
.Subject = 'subject
.Body = 'body of the email
.Attachments.Add ("C:AttachmentsTest File.docx") 'if any attachments needed
.Importance = olImportanceHigh 'if it is important
.Display 'or .Send
End With
Set msg = Nothing
End Sub
或者您可以选择第二种方法,正如您提到的那样,您可能想要准备好一个模板。语法将是:expression.CreateItemFromTemplate(TemplatePath, InFolder)
,其中表达式再次返回一个Application
对象,TemplatePath
是必需的字符串参数,告诉我们要使用的模板所在的位置。InFolder
是我从不使用的可选参数(不完全确定它的作用(。所以你的代码可能是这样的:
Sub email_option2()
Dim msg As MailItem
Set msg = Application.CreateItemFromTemplate("C:MyfolderTemplatesAction Required documents needed.oft")
With msg
.To = "Jane.Doe@customer.com"
.CC = "homebase@gmail.com"
.Subject = 'subject
.Display 'or .Send
End With
Set msg = Nothing
End Sub
至于.SentOnBehalfOfName = "homebase@gmail.com"
线。我不确定它能做什么。查看此处:SentOnBehalfOfName Microsoft帮助,SentOnBehalfOfName 的问题或更多关于 SentOfBehalfOfName 的问题。如果这是您想要实现的目标,那么您只需将此行放回代码即可。