Я хочу открыть файл Word и подключить его к третьей таблице в документе Excel в качестве источника данных для рассылки. Моя основная проблема: как я могу установить «Таблица3», чтобы не открывать это диалоговое окно?Call MailMerge.OpenDataSource() Установить соединение
Вот мои испытания (все в виде комментариев за #):
$Word = New-Object -Com Word.Application
$Word.Visible = 'TRUE'
$Doc = $Word.Documents.Open("D:\GoogleDrive\_POWERSHELL\Template.doc")
$Doc.Activate()
$DataPath = "D:\GoogleDrive\_POWERSHELL\DataSource.xls"
$DataTable = "Table3"
$default = [Type]::Missing
#1 $Doc.MailMerge.OpenDataSource("D:\GoogleDrive\_POWERSHELL \DataSource.xls") #this works fine but opens a box to choose the table
#2 $Doc.MailMerge.OpenDataSource($DataPath) #this works fine too but opens a box to choose the table
#3 $Doc.MailMerge.OpenDataSource(Name:="D:\GoogleDrive\_POWERSHELL\DataSource.xls", Connection:="Table3") #SYNTAX ERROR: Fehlende ")" im Methodenaufruf/Missing ")" in Method Call
#4 $Doc.MailMerge.OpenDataSource -Name "D:\GoogleDrive\_POWERSHELL\DataSource.xls" -Connection "Table3" #SYNTAX ERROR: Sie müssen auf der rechten Seite des Operators "-" einen Wertausdruck angeben.
#5 $Doc.MailMerge.OpenDataSource("D:\GoogleDrive\_POWERSHELL\DataSource.xls", 'TRUE', 'TRUE', 'TRUE', 'TRUE', '', '', 'FALSE', '', '', '',"'Table3'", '', '', '', '')
$Doc.MailMerge.OpenDataSource("D:\GoogleDrive\_POWERSHELL\DataSource.xls", $default, $default, $default, $default, $default, $default, $default, $default, $default, $default, "Table3", $default, $default, $default, $wdMergeSubTypeWord2000)
#7 $Doc.MailMerge.OpenDataSource($DataPath, $default, $default, $default, $default, $default, $default, $default, $default, $default, $default, $DataTable, $default, $default, $default, $default)
Write-Host $Doc.MailMerge.DataSource.Name
#$Doc.MailMerge.Execute()
#$Doc.MailMerge.Destination = "D:\GoogleDrive\_POWERSHELL\MailMergeTest.doc"
Start-Sleep 2 #Pause von 2 Sekunden
$Doc.Close()
$Word.Quit()
- # 6 (активный), кажется, подходите, но открывает окно для выбора таблицы в любом случае.
- # 3 и # 4 - почему эти синтаксические ошибки? какой правильный синтаксис?
# 3 не работает, поскольку PowerShell не поддерживает именованные параметры ('param: = value'). # 4 не работает, потому что 'OpenDataSource()' это метод, а не функция PowerShell, поэтому параметры должны передаваться как список значений в круглых скобках ('.OpenDataSource (v1, v2, ...)'). –
Итак, нет никакого способа обойти эти списки $ defaults? –
Нет, что я знаю. –