我正在尝试编写一个Powershell脚本来编辑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 HelloWord仍然显示我以前手动插入的字符串。当我输入时:
$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。
发布于 2016-04-14 06:16:51
当您有一个遗留文本表单字段时,书签实际上是用来标识该字段的。如果您试图在VBA (例如)中编写替换书签的文本,可能会出现错误6028 --“范围不能删除”。
我不太了解Powershell,不需要检查就可以做到这一点,但是等效的VBA应该是
doc.FormFields($bookmark).Result = "Something"所以我猜powershell有点像
$doc.FormFields.Item($bookmark).Result = "Something"https://stackoverflow.com/questions/36597369
复制相似问题