Настройка места назначения для Powershell MS-Word MailMerge - PullRequest
1 голос
/ 09 апреля 2020

Я пытался решить эту «простую» проблему, но не могу найти решение этой проблемы.

Я пытаюсь сгенерировать скрипт powershell для запуска почтового слияния MS-WORD и экспорта файла документ (в идеале в формате pdf) в указанное c расположение файла. Почтовое слияние выполнено успешно, но вместо создания нового документа оно просто печатается на принтере по умолчанию. Я хотел бы, чтобы он сгенерировал новый документ, чтобы затем я мог сохранить его в указанном месте назначения.

$DocumentName = 'MailMerge.docx'
$OutputFilename = 'Output.pdf'
$word=new-object -com Word.Application
$word.Visible = 'True'
$doc=$word.Documents.Open($DocumentName)
$doc.WdMailMerge.Destination.wdSendToNewDocument
$doc.Mailmerge.Execute()
$word.ActiveDocument.SaveAs([ref] $Outputfilename, [ref] 17)
$Doc.close()
$word.Quit()

Я предполагаю, что я делаю что-то не так с пунктом назначения mailmerger, но я обхожу круги .

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

[править] Всегда есть что-то, что вам важно забыть. При этом он генерирует печать mailmerge до того, как попадает в строку для сохранения документа. Когда запускается сохранение, это одностраничный документ, переименовывающий исходное слияние.

Ответы [ 2 ]

1 голос
/ 09 апреля 2020

Эта строка

$doc.WdMailMerge.Destination.wdSendToNewDocument

должна быть похожа на это:

$doc.MailMerge.Destination = 0

Или использовать встроенную константу Word, вы должны быть в состоянии сделать это (после комментария @ Тео]:

$doc.MailMerge.Destination =  [Microsoft.Office.Interop.Word.WdMailMergeDestination]::WdSendToNewDocument
0 голосов
/ 09 апреля 2020

Заменить эту строку:

$word.ActiveDocument.SaveAs([ref] $Outputfilename, [ref] 17)

этой строкой:

$doc.SaveAs([ref] $Outputfilename, [ref] 17)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...