Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 要发送模板的宏_Excel_Vba_Templates_Outlook - Fatal编程技术网

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”。发送带有结束子项的结束