Excel 要发送模板的宏
我有一封很长的电子邮件,我需要用宏发送给我们的提供商。我尝试将电子邮件设置为一个函数,然后调用该函数,但我达到了回车次数的最大值 我想使电子邮件成为一个模板,以便更容易更新,然后发送。到目前为止,我所拥有的是这个,它适用于较短的消息,我的消息很长,所以我认为模板将是最好的Excel 要发送模板的宏,excel,vba,templates,outlook,Excel,Vba,Templates,Outlook,我有一封很长的电子邮件,我需要用宏发送给我们的提供商。我尝试将电子邮件设置为一个函数,然后调用该函数,但我达到了回车次数的最大值 我想使电子邮件成为一个模板,以便更容易更新,然后发送。到目前为止,我所拥有的是这个,它适用于较短的消息,我的消息很长,所以我认为模板将是最好的 Sub Sample_Auto_Generated_Email() Dim Email_Subject, Email_Send_From, Email_Send_To, _ Email_Cc, Email_Body As St
Sub Sample_Auto_Generated_Email()
Dim Email_Subject, Email_Send_From, Email_Send_To, _
Email_Cc, Email_Body As String
Dim Mail_Object, Mail_Single As Variant
Email_Subject = "Sample MAR Email"
Email_Send_From = "Richard.Sabbara@x.com"
Email_Send_To = "Richard.Sabbara@x.com"
Set objOutl = CreateObject("Outlook.Application")
Set objMailItem = objOutl.CreateItem(olMailItem)
objMailItem.Display
strEmailAddr = "Richard.Sabbara@x.com"
objMailItem.Recipients.Add strEmailAddr
objMailItem.Subject = "Sample"
objMailItem.Body = GetMessageBody()
objMailItem.Send
Set objMailItem = Nothing
Set objOutl = Nothing
End Sub
' This Function has been added.
Function GetMessageBody() As String
GetMessageBody = "Good Afternoon" & vbNewLine & _
Chr(10) & _
"Attached is your Monthly Action Report (MAR) for May 2018." & vbNewLine & _
Chr(10) & _
"This report has been password protected with your practice password provided
to you by your ACOP Care Coordinator in April 2018." & vbNewLine & _
Chr(10) & _
"Technical questions (such as, how to access the MAR, password issues, not
receiving the email, etc.), please contact the Physician Engagement team at
providerservices@ax.com."
Chr (10) & _
"Questions related to the patient data contained within the MAR, please `enter code here`
contact your ACO Partner Care Coordinator."
Chr (10) & _
"Thank you,"
End Function
您可以创建一个后缀名为.docx的文档,然后将模板放入该文档中 将您的代码替换为以下代码:
Sub Sample_Auto_Generated_Email()
Dim Email_Subject, Email_Send_From, Email_Send_To, _
Email_Cc, Email_Body As String
Dim Mail_Object, Mail_Single As Variant
Dim wd As Object, editor As Object
Dim doc As Object
Dim oMail As MailItem
Set wd = CreateObject("Word.Application")
Set doc = wd.documents.Open("D:\aa.docx")
doc.Content.Copy
doc.Close
Set wd = Nothing
Email_Subject = "Sample MAR Email"
Email_Send_From = “"
Email_Send_To = ""
Set objOutl = CreateObject("Outlook.Application")
Set objMailItem = objOutl.CreateItem(olMailItem)
objMailItem.Display
strEmailAddr = ""
objMailItem.Recipients.Add strEmailAddr
objMailItem.Subject = "Sample"
objMailItem.BodyFormat = olFormatRichText
Set editor = objMailItem.GetInspector.WordEditor
editor.Content.Paste
'objMailItem.HTMLBody =
objMailItem.Send
Set objMailItem = Nothing
Set objOutl = Nothing
End Sub
这是我的结果:
您可以创建一个后缀名为.docx的文档,然后将模板放入该文档中 将您的代码替换为以下代码:
Sub Sample_Auto_Generated_Email()
Dim Email_Subject, Email_Send_From, Email_Send_To, _
Email_Cc, Email_Body As String
Dim Mail_Object, Mail_Single As Variant
Dim wd As Object, editor As Object
Dim doc As Object
Dim oMail As MailItem
Set wd = CreateObject("Word.Application")
Set doc = wd.documents.Open("D:\aa.docx")
doc.Content.Copy
doc.Close
Set wd = Nothing
Email_Subject = "Sample MAR Email"
Email_Send_From = “"
Email_Send_To = ""
Set objOutl = CreateObject("Outlook.Application")
Set objMailItem = objOutl.CreateItem(olMailItem)
objMailItem.Display
strEmailAddr = ""
objMailItem.Recipients.Add strEmailAddr
objMailItem.Subject = "Sample"
objMailItem.BodyFormat = olFormatRichText
Set editor = objMailItem.GetInspector.WordEditor
editor.Content.Paste
'objMailItem.HTMLBody =
objMailItem.Send
Set objMailItem = Nothing
Set objOutl = Nothing
End Sub
这是我的结果:
该代码有效,我希望它发送电子邮件模板,而不是嵌入消息。如果我的模板名为temp.oft,我会打开它来显示消息。我找到了以下代码,它会打开模板,我只需要添加一个到、从、抄送、主题行和附件。Sub-OutlookTemplate1()将myolapp设置为对象将myitem设置为对象集myolapp=CreateObject(“Outlook.Application”)myolapp.Session.Logon“修改文件的链接和标题以使用示例集myitem=myolapp.CreateItemFromTemplate(“C:\Users\e4h7x8r\Desktop\Test\u Templates.oft”)“myitem.Display”或“send End Sub”您不应该在此处使用函数您可能只想使用内置的并使用vba将其踢出代码工作状态,我希望它发送电子邮件模板,而不是嵌入消息。如果我的模板名为temp.oft,我会打开它来显示消息。我找到了以下代码,它会打开模板,我只需要添加一个到、从、抄送、主题行和附件。Sub-OutlookTemplate1()将myolapp设置为对象将myitem设置为对象集myolapp=CreateObject(“Outlook.Application”)myolapp.Session.Logon“修改文件的链接和标题以使用示例集myitem=myolapp.CreateItemFromTemplate(“C:\Users\e4h7x8r\Desktop\Test\u Templates.oft”)“myitem.Display”或“send End Sub”您不应该在此处使用函数您可能只想使用内置的并使用vba将其启动。我同意,使用一些外部位置存储消息的方法会让您感觉更好。通过在每个函数中创建小的文本集,您可以实现以下功能。它可能不是最干净的,但它可以工作。谢谢。子示例\u Auto\u Generated\u Email\u Final()将Mail\u Object=CreateObject(“Outlook.Application”)与Mail\u Object.CreateItem(o.Subject=“MAR Report.To=”Richard。Sabbara@x.com.Body=GetMessageBody()&GetMessageBody2().Attachments.Add“C:\Users\e4h7x8r\Desktop\History.txt”.Attachments.Add“C:\Users\e4h7x8r\Desktop\Dr.C Report.xlsx”发送End With End sub我同意,通过在每个函数中创建一组小的文本,使用外部位置存储消息的方法可以让您感觉更好。它可能不是最干净的,但它可以工作。谢谢。子示例\u Auto\u Generated\u Email\u Final()将Mail\u Object=CreateObject(“Outlook.Application”)与Mail\u Object.CreateItem(o.Subject=“MAR Report.To=”Richard。Sabbara@x.com.Body=GetMessageBody()&GetMessageBody2().Attachments.Add“C:\Users\e4h7x8r\Desktop\History.txt”.Attachments.Add“C:\Users\e4h7x8r\Desktop\Dr.C Report.xlsx”。发送带有结束子项的结束