使用Outlook模板和Excel发送来自Excel 2007 VBA的电子邮件设置变量

时间:2011-12-12 04:32:01

标签: excel vba excel-vba outlook outlook-vba

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

  1. 创建邮件对象
  2. 将邮件对象设置为模板文件
  3. 设置然后使用有关当前客户端的数据填充模板 - 大部分都停留在此处,不确定如何在模板中指定变量然后在VBA中与它们相关
  4. 保存到草稿以供日后查看/发送
  5. 例如。亲爱的<<客户名称>>亲爱的约翰史密斯

    到目前为止我的代码:

    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
    

    我需要知道这是否可能,我可以在没有插件的情况下完成吗?如果有的话,是否有人知道我可以遵循的良好链接/教程?

    提前致谢并致以亲切的问候

    更新添加了我的代码并对请求进行了一些更改

2 个答案:

答案 0 :(得分:10)

以下是您可以做的事情:

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

或者,如果您的邮件是HTML格式:

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

在Excel / Outlook 2007上成功测试

答案 1 :(得分:2)

这是邮件合并的完美工作。如果您想以编程方式执行此操作,请参阅

Mail Merge in Word+Excel using VBA

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