我正在编写一个powershell脚本,它可以将Word文档作为COM对象打开,并使用内容控件对其进行编辑。每个内容控件都由Word文档中分配给它的标题标识。我可以编辑文本框和复选框,但我不知道如何更改Word文档中下拉列表中选中的项目。
下面是我尝试过的代码的一个例子,它成功地改变了文本框和复选框,但对下拉列表不起作用。我看到的所有文档似乎都是VBA的,所以我不知道如何使用powershell与下拉列表交互。这是我在com对象中查看内容控件具有哪些属性后的最佳猜测。
$filename = "C:\Path\File.docx"
$wordPg1 = New-Object -comobject Word.Application
$wordPg1.Visible = $False
$Page1Doc = $wordPg1.documents.open($filename)
$Page1Fields = $Page1Doc.ContentControls
foreach($field in $Page1Fields)
{
switch ( $field.Title )
{
# These two work
"Text Box" { $field.Range.Text = "1234" }
"Check Box" { $field.Checked = $TRUE }
# This one doesn't work
"Dropdown" { $field.DropdownListEntries.Index = 2 }
}
}
$SaveAsFileName = "C:\Path\FileEdited.docx"
$Page1Doc.SaveAs([ref]$SaveAsFileName)
$Page1Doc.Close()
$wordPg1.Quit()
$null = [System.Runtime.InteropServices.Marshal]::ReleaseComObject($wordPg1)
这给出了错误
设置“索引”异常:“在此对象上找不到属性'Index'。验证属性是否存在并且可以设置。”
1条答案
按热度按时间qcuzuvrc1#
我找到了我一直在寻找的正确措辞。这现在工作正常,并选择下拉列表中的第二个项目。