使用任务计划程序将Word邮件合并自动化为HTML电子邮件

时间:2015-02-01 19:29:19

标签: excel-vba vbscript scheduled-tasks word-vba mailmerge

我正在尝试创建一个简单的.vbs文件,我可以在设定的时间使用任务计划程序自动运行该文件,该文件将打开word doc并对每个收件人执行电子邮件合并。

已经使用预定义字段设置了Word文档,并且包含了数据源“重新连接”以确保正确设置源数据。

我在代码下运行时遇到问题,而代码又会打开2个单词的应用程序(包含所有记录的主文件和新的2页单词文件只有第一个和最后一个记录)。 / p>

请帮我调试一下这段代码,因为我开始失去理智。

Dim wd As Object
Dim WDoc As Object
Dim strWorkbookName As String

On Error Resume Next
Set wd = CreateObject("Word.Application")
wd.Application.Visible = True

Set WDoc = wd.Documents.Open("C:\Users\Documents\test\test.docx")

strWorkbookName = "C:\Users\Documents\test\test_datasource.xlsx"

WDoc.MailMerge.OpenDataSource _
    Name:=strWorkbookName, _
    ConfirmConversions:=False, _
    ReadOnly:=False, _
    LinkToSource:=True, _
    AddToRecentFiles:=False, _
    Revert:=False, _
    Format:=0, _
    Connection:="Data Source=" & strWorkbookName & ";Mode=Read", _
    SQLStatement:="SELECT * FROM `Summary$`"


With WDoc.MailMerge
    .Destination = wdSendToEmail
    .MailAddressFieldName = "Email"
    .MailSubject = "TEST - EMAIL SUBJECT"
    .SuppressBlankLines = True
    .MailAsAttachment = False
    .MailFormat = wdMailFormatHTML
    With .DataSource
        .FirstRecord = wdDefaultFirstRecord
        .LastRecord = wdDefaultLastRecord
    End With
.Execute
End With


Set wd = Nothing
Set WDoc = Nothing


End Sub

1 个答案:

答案 0 :(得分:0)

可能这可能就足够了:

sub M_snb()
  with getobject("C:\Users\Documents\test\test.docx")
    with .mailmerge
      .Destination = 2
      .MailAddressFieldName = "Email"
      .MailSubject = "TEST - EMAIL SUBJECT"
      .SuppressBlankLines = True
      .MailAsAttachment = False
      .MailFormat = 1
      .execute
    end with
    .close 0
  end with
End sub

NB。在后期绑定中,单词常数不会被识别。