【问题标题】:Send an email from Excel 2007 VBA using an Outlook Template & Set Variables使用 Outlook 模板从 Excel 2007 VBA 发送电子邮件并设置变量
【发布时间】:2012-01-18 04:33:24
【问题描述】:

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

  1. 创建邮件对象
  2. 将邮件对象设置为模板文件
  3. 设置然后在模板中填写有关当前客户端的数据 - 大多停留在这里,不知道如何在模板中指定变量,然后在 VBA 中关联它们
  4. 保存到草稿以供日后查看/发送

例如亲爱的 > = 亲爱的 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

【问题讨论】:

    标签: excel vba outlook


    【解决方案1】:

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

    Mail Merge in Word+Excel using VBA

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

    【讨论】:

    • 谢谢伙计,这个解决方案已经构建好了,正在寻找一个快速的改变。不过,我知道邮件合并有多有效,并感谢您的回答。
    • 我实际上不同意。 Word 邮件合并有一些主要问题,例如: 主题是固定文本 - 只能通过 Outlook VB 宏或其他程序选项克服 只能发送给一个电子邮件收件人。如果您想发送电子邮件至和抄送,则不能。您甚至不能将两封电子邮件合并到收件人电子邮件地址中。布赖恩
    【解决方案2】:

    你可以这样做:

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

    【讨论】:

      猜你喜欢
      • 2015-08-10
      • 1970-01-01
      • 2018-07-24
      • 1970-01-01
      • 2022-12-13
      • 1970-01-01
      • 2014-11-07
      • 2020-05-16
      相关资源
      最近更新 更多