0

フィールドと相互参照 (内部およびドキュメント間) を多用する大量の Word ドキュメントを扱っています。これらを更新し、変更後にすべての整合性を取り戻すには、各ファイルを開き、ファイルの内容全体を選択し (Ctrl-A を押すのと同じ)、すべてのフィールドを更新します (F9 を押すのと同じです)。そして、すべてのファイルに対してこれを2 回行う必要があるため、すべてのファイル間の相互参照も適切に更新されます。

これはかなり面倒で時間のかかるプロセスなので、それを行う小さな PowerShell スクリプトを書きたいと思いました。ファイルを更新する関連関数は次のようになります。

...
function UpdateDoc([object]$word, [object]$fileHandle) {
    Write-Host("Updating: '" + $fileHandle.Name + "' ('" + $fileHandle.FullName + "'):")
    # open the document:
    $doc = $word.Documents.Open($fileHandle.FullName)
    # select the entire document:
    ???
    # update it:
    ???
    # then save it:
    $doc.Save
    $doc.Close
    Write-Host("'" + $fileHandle.Name + "' updated.")
}
...

しかし、ファイルのコンテンツを選択してすべてを更新する方法、つまり、目的を達成するために 2 つの ???-markers の代わりにこのコードに何を入れなければならないかということに行き詰まっています。

4

1 に答える 1

0

試しましたか:

$doc.Fields | %{$_.Update()}

すべてのフィールドが更新されます

于 2012-11-15T03:21:29.553 に答える