2010年12月24日金曜日

◆Wordの目次を更新する

PowerShell: ◆複数のWord文書を纏めて1つにする。で複数の章に分けたドキュメントを一つにまとめている。
それぞれの文書には先頭に目次が付いているのだが、一つに纏めたときにフォーマットが崩れてしまう文書が存在する。(1つの目次行が2行に分かれて表示されたりする)

どういう文書の場合おかしくなるのか法則性はよくわからない。
Wordお得意のバグの範疇だと思うのだがWordに腹を立てても解決しない。

目次を選択してF9で最新状態にしてやれば直るので、文書を纏めるときに最新に更新するロジックを組み込むことにした。
Selection.Fields.Update()で更新してくれるのかと思ったのだが、どうやら目次は更新してくれない。
調べてみたところ、TablesOfContents.Update()メソッドで更新されるようだ。

001
002
003
004
005
006
007
008
009
010
011
012

#Wordの目次を更新する
$word = new-object -comObject "Word.Application"
$word.Visible = $true
[void]$word.Documents.Open("d:\desktop\test.docx")

#$word.ActiveDocument.TablesOfContents.Item(1).Update()
foreach($item in $word.ActiveDocument.
TablesOfContents){
 
$item.
update()
 
#$item.UpdatePageNumbers
}
[void]$word.Application.ActiveDocument.Close()
$word.Quit()

0 件のコメント:

コメントを投稿