首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Powershell编辑MS Word中的文本表单字段

用Powershell编辑MS Word中的文本表单字段
EN

Stack Overflow用户
提问于 2016-04-13 11:45:23
回答 1查看 5.3K关注 0票数 2

我正在尝试编写一个Powershell脚本来编辑2007中的文本表单字段。它应该通过我之前配置的书签找到一个表单字段,并将文本写入其中。我为测试目的而编写的默认文本是“某样东西”。这就是我到目前为止所拥有的:

代码语言:javascript
复制
$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)

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

代码语言:javascript
复制
FORMTEXT Hello

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

代码语言:javascript
复制
$doc.Bookmarks.Item($bookmark).Range.Text

产出如下:

代码语言:javascript
复制
FORMTEXT Something

我已经试过了

代码语言:javascript
复制
$Word.ActiveDocument.Reload()
$Word.ActiveDocument.Fields.Update()
$doc.PrintPreview()
$doc.ClosePrintPreview()
$doc.Bookmarks.Item($bookmark).Range.Fields.Update()

但似乎什么都起不到作用。有没有人知道如何用字段式的字段式写东西呢?或者,如果这更容易的话,我可以使用一个(富)文本内容控件(它看起来更新)。这些不是使用书签,而是使用标签和标题。谢谢你提前帮忙。PS:它也不适用于MS Word 2016。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-14 06:16:51

当您有一个遗留文本表单字段时,书签实际上是用来标识该字段的。如果您试图在VBA (例如)中编写替换书签的文本,可能会出现错误6028 --“范围不能删除”。

我不太了解Powershell,不需要检查就可以做到这一点,但是等效的VBA应该是

代码语言:javascript
复制
doc.FormFields($bookmark).Result = "Something"

所以我猜powershell有点像

代码语言:javascript
复制
$doc.FormFields.Item($bookmark).Result = "Something"
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36597369

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档