Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.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
使用Outlook模板从Excel 2007 VBA发送电子邮件&;设置变量_Excel_Vba_Outlook - Fatal编程技术网

使用Outlook模板从Excel 2007 VBA发送电子邮件&;设置变量

使用Outlook模板从Excel 2007 VBA发送电子邮件&;设置变量,excel,vba,outlook,Excel,Vba,Outlook,我有一个数据列表,比如客户信息(姓名、电子邮件、欠款等),存储在Excel工作表中。我的目标是在Excel中单击一个按钮,并在Outlook模板中向每个客户发送他们的信息 创建邮件对象 将邮件对象设置为模板文件 设置模板,然后用当前客户机的数据填充模板-主要停留在这里,不知道如何在模板中指定变量,然后在VBA中与它们关联 保存到草稿以供以后审阅/发送 e、 亲爱的约翰·史密斯 到目前为止,我的代码是: Dim myOlApp As Outlook.Application Dim MyItem A

我有一个数据列表,比如客户信息(姓名、电子邮件、欠款等),存储在Excel工作表中。我的目标是在Excel中单击一个按钮,并在Outlook模板中向每个客户发送他们的信息

  • 创建邮件对象
  • 将邮件对象设置为模板文件
  • 设置模板,然后用当前客户机的数据填充模板-主要停留在这里,不知道如何在模板中指定变量,然后在VBA中与它们关联
  • 保存到草稿以供以后审阅/发送
  • e、 亲爱的约翰·史密斯

    到目前为止,我的代码是:

    Dim myOlApp As Outlook.Application
    Dim MyItem As Outlook.MailItem
    
    Set myOlApp = CreateObject("Outlook.Application")
    Set MyItem = myOlApp.CreateItemFromTemplate("C:\egTemplate.oft")
    
    With MyItem
        .To = Worksheets("Clients").Range(1, 2)
        .Subject = "Monthly bill"
        'Refer to and fill in variable items in template
        .Save
    End With
    
    Set MyItem = Nothing
    Set MyOlApp = Nothing
    

    以下是您可以做的:

    With MyItem
        'Refer to and fill in variable items in template
        .Body = Replace(.Body, "<< clientname >>", Worksheets("Clients").Range(1, 2))
    End With
    

    在Excel/Outlook 2007上测试成功这是邮件合并的完美工作。如果要以编程方式执行此操作,请参阅


    或者,您可以简单地手动(从Word)执行,插入合并字段,然后选择工作簿作为数据源。您可以合并到电子邮件,Outlook将使用每行/记录中的信息向每个收件人的电子邮件发送个性化电子邮件。

    谢谢,mate,此解决方案已经构建,正在寻求快速更改。不过我知道邮件合并有多有效,我很感激你的回答。我不同意。Word邮件合并有一些主要问题,例如:主题是固定文本-只能通过Outlook VB宏或其他程序解决。ATTICAL选项只能发送到一个电子邮件收件人。如果您想向和抄送电子邮件,则不能。您甚至不能将这两封电子邮件合并到“收件人”电子邮件地址中。布瑞恩
    With MyItem
        'Refer to and fill in variable items in template
        .HTMLBody = Replace(.HTMLBody, "&lt;&lt; clientname &gt;&gt;",  Worksheets("Clients").Range(1, 2))
    End With