2016-04-13 5 views
1

Microsoft Office Word 2007でテキストフォームフィールドを編集するPowershellスクリプトを作成しようとしています。以前に設定したブックマークを使用してフォームフィールドを検索し、それに私がテスト目的のために書き込んだデフォルトのテキストは "Something"です。Powershellを使用してMS Wordのテキストフォームフィールドを編集する

$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 

言葉はまだ私が前に手動で挿入された文字列が表示されます。私がこれまで持っているものだ 私が入力します。

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

答えて

2

レガシーテキストフォームフィールドを使用している場合は、実際にフィールドを識別するブックマークがあります。 VBAでブックマークのテキストを書き換えようとすると(おそらく)、エラー6028 - 「範囲を削除できません」が表示されます。

ので、私はPowerShellはうわーそれは簡単

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

のようなものだと思います私はチェックせずにこれを行うにはPowerShellが十分知らないが、同等のVBAは

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

だろう^^ありがとうございました –

+0

MSOffie 2013で動作します... – hyprfrcb

関連する問題