2

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 でも動作しません。

4

1 に答える 1

3

従来のテキスト フォーム フィールドがある場合、ブックマークは実際にはフィールドを識別するために存在します。VBA でブックマークのテキストを置き換えて書き込もうとすると (たとえば)、エラー 6028 - "範囲を削除できません" が発生する可能性があります。

チェックせずにこれを行うのに十分なPowershellはわかりませんが、同等のVBAは次のようになります

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

だから、powershellは次のようなものだと思います

$doc.FormFields.Item($bookmark).Result = "Something"
于 2016-04-14T06:16:51.350 に答える