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

3

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

  1. 创建邮件对象
  2. 将邮件对象设置为模板文件
  3. 设置并使用当前客户的数据填充模板 - 大部分卡在这里,不确定如何在模板中指定变量,然后在VBA中关联它们
  4. 保存到草稿箱以供稍后查看/发送

例如:尊敬的<< clientname >> = 尊敬的John Smith

我的代码如下:

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个回答

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 上成功测试


2
这是一个非常适合使用邮件合并的工作。如果您想要以编程方式完成此操作,请参见使用VBA在Word+Excel中进行邮件合并。或者,您可以手动完成(从Word开始),插入合并字段,然后选择您的工作簿作为数据源。您可以合并到电子邮件中,Outlook将使用每行/记录的信息向每个收件人的电子邮件发送个性化邮件。请注意保留HTML标签。

谢谢,伙计。不过这个解决方案已经被构建了,我只是在寻找一个快速的更改。我知道邮件合并有多么有效,感谢你的回答。 - Matt Rowles
2
我其实不同意。Word邮件合并存在一些重大问题,例如:主题是固定文本 - 只能通过Outlook VB宏或其他编程选项来克服 只能发送给一个电子邮件收件人。如果您想发送电子邮件TO和CC,则无法执行此操作。您甚至不能将两个电子邮件合并为To电子邮件地址。 Brian - user4616984

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接