Автоматизируйте слияние Word Mail как электронной почты HTML с помощью планировщика заданий

Я пытаюсь создать простой файл .vbs, который я могу автоматически запускать с помощью планировщика задач в установленное время, который откроет документ Word и выполнит слияние электронной почты с каждым получателем.

Документ Word уже настроен с предопределенными полями, а «повторное подключение» к источнику данных включено, чтобы гарантировать, что исходные данные настроены правильно.

У меня возникла проблема с запуском приведенного ниже кода, который, в свою очередь, откроет приложения из двух слов (основные файлы, содержащие все записи, и новый файл слов из двух страниц только с первой и последней записью).

Пожалуйста, помогите мне отладить этот код, так как я начинаю терять рассудок, исправляя это.

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

person User098765    schedule 01.02.2015    source источник


Ответы (1)


Пожалуй, этого будет достаточно:

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. при позднем связывании константы Word не распознаются.

person snb    schedule 01.02.2015
comment
Я проверю это. Я использую позднюю привязку, так как не могу получить доступ к своему excel VBA (ошибка доступа к системному реестру появляется каждый раз, когда я пытаюсь открыть). Любая подсказка о том, как это исправить? - person User098765; 02.02.2015