在MS Word中使用Powershell编辑文本表单字段

tyu7yeag  于 12个月前  发布在  Shell
关注(0)|答案(2)|浏览(138)

我正试图写一个Powershell脚本,编辑文本表单字段在Microsoft Office Word 2007.它应该通过书签找到一个表单字段我之前配置并写入一个文本到它.我写进它用于测试目的的默认文本是“东西”.这就是我到目前为止:

$document = 'D:\Powershell\Test.docx'
$Word = New-Object -Com Word.Application
$Word.Visible = $True
$doc = $word.Documents.Open($document)
$text = "Hello"
$bookmark = "server1"
$doc.Bookmarks.Item($bookmark).Range.Text.Replace("Something", $text)

字符串
当它在控制台中工作时,因为输出是:

FORMTEXT Hello


Word仍然显示我以前手动插入的字符串。当我键入时:

$doc.Bookmarks.Item($bookmark).Range.Text


输出为:

FORMTEXT Something


我已经试过了:

$Word.ActiveDocument.Reload()
$Word.ActiveDocument.Fields.Update()
$doc.PrintPreview()
$doc.ClosePrintPreview()
$doc.Bookmarks.Item($bookmark).Range.Fields.Update()


但似乎没有什么工作.有人知道如何写的东西在该文本表单字段永久?或者,如果这是更容易,我可以使用(丰富)文本内容控件(这似乎是新的).那些不使用书签,但标签和标题.提前感谢您的帮助. PS:它不与MS Word 2016要么工作.

ztyzrc3y

ztyzrc3y1#

当你有一个遗留的文本表单字段时,书签实际上是用来标识该字段的。如果你试图写替换书签中的文本(比如说),你可能会得到错误6028 -“该范围无法删除”。
我不太了解PowerShell,不检查就能做到这一点,但等效的方法是

doc.FormFields($bookmark).Result = "Something"

字符串
所以我猜powershell是这样的

$doc.FormFields.Item($bookmark).Result = "Something"

hfyxw5xn

hfyxw5xn2#

万一Word文档没有书签,您也可以根据表单字段的索引设置值

$document = 'D:\Powershell\Test.docx'
$word = New-Object -Com Word.Application

$doc = $word.Documents.Open($document)
$doc.FormFields[1].Result = (Get-Date).ToString("dd.MM.yyy")
$doc.FormFields[2].Result = "Something" 
$doc.FormFields[3].CheckBox.Value = $True
# ComboBox controls are different
$doc.ContentControls[4].Range.Text = $doc.ContentControls[4].DropdownListEntries[2]
$doc.ContentControls[4].Range.Text = "" # deletes the selection

字符串

相关问题