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

问题描述:

我有一个数据列表,例如存储在Excel工作表中的客户信息(姓名,电子邮件,金额欠额等)。我的目标是点击Excel中的按钮,并在Outlook模板中向每个客户端发送他们的信息。使用Outlook模板和设置变量从Excel 2007 VBA发送电子邮件

  1. 创建一个邮件对象
  2. 设置邮件对象的模板文件
  3. 设置,然后在模板中填充数据有关当前客户端 - 在这里主要是卡住了,不知道如何在指定变量模板,然后与他们在VBA
  4. 保存到草稿供日后查看/发送

如。亲爱的< < CLIENTNAME >> =亲爱的约翰史密斯

我的代码迄今:

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 

,或者,如果您的邮件以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上成功测试

+0

感谢队友这工作完美。甚至没有想到旧的替换动作:) –

+0

任何想法如何这将适用于Excel/Outlook 2010?现在我升级了运行时错误287? –

+2

这应该可能以同样的方式工作。尝试逐步调试'Worksheets'单元格值和'.Body'或'.HTMLBody'。或者问一个新的问题,并在这里链接 – JMax

这是邮件合并的完美工作。如果你想以编程方式做到这一点,看到

Mail Merge in Word+Excel using VBA

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

+0

感谢队友,这个解决方案已经建成,但正在寻找一个快速的改变。我知道邮件合并是多么有效,并且非常感谢答案。 –

+1

我真的不同意。 Word邮件合并有一些主要问题,例如:主题是固定文本 - 只能通过Outlook VB宏或其他编程选项克服只能发送给一个电子邮件发件人。如果你想发送电子邮件到和CC,你不能。您甚至无法将这两封电子邮件合并到收件人电子邮件地址中。布赖恩 – 2015-02-28 05:35:35