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

标签 powershell ms-word bookmarks form-fields

我正在尝试编写一个在 Microsoft Office Word 2007 中编辑文本表单字段的 Powershell 脚本。它应该通过我之前配置的书签找到一个表单字段,然后将文本写入其中。我出于测试目的写入的默认文本是“Something”。 这就是我到目前为止所拥有的:

$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。

最佳答案

当您有旧文本表单字段时,书签确实可以识别该字段。如果您尝试在 VBA 中编写替换书签的文本(例如),您可能会收到错误 6028 - “无法删除范围”。

我不太了解 Powershell,无法在不检查的情况下执行此操作,但等效的 VBA 是

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

所以我猜 powershell 是这样的

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

关于powershell - 使用 Powershell 在 MS Word 中编辑文本表单字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36597369/

相关文章:

iis - 如何通过 WMI 使用网络共享创建 IIS 虚拟目录

Powershell - 将大量文本写入文件的最快方法

powershell - 如何使用 Invoke-Sqlcmd 连接到 SQL Server LocalDB?

python - 计算 Microsoft Word 文件中的行数,而不考虑自动换行

excel - VBA 将 Microsoft Word 书签和选择文本导出到 Excel 电子表格

url - 是否可以使用 URL 参数链接到 PDF 中的书签?

python - 无法使用Windows PowerShell安装Jupyter Notebook,因为pip不会升级到20.1版

web-services - WORD 和 PDF 到文本 Web 服务

c# - 不能在C#中以原始格式将PPT幻灯片中的形状复制到word文档中吗?

python - HTML 火狐书签