2012-11-15 53 views
0

我正在處理大量使用字段和交叉引用(內部和文檔之間)的Word文檔。 要更新這些並在更改後再次保持一致,我必須打開每個文件,選擇整個文件的內容(相當於按Ctrl-A)並更新所有字段(相當於擊中F9)。我必須對所有文件執行兩次,以便所有文件間交叉引用也能正確更新。控制MSWord的Powershell:如何選擇整個內容和更新?

由於這是一個相當乏味和漫長的過程,我想給我寫一個小小的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.") 
} 
... 

但我被困在如何選擇文件的內容,並更新了這一切,也就是什麼也進入這個代碼,而不是兩個??? - 標記來實現我想要的?

回答

0

你嘗試:

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

這應該更新的所有字段

+0

它呢!我之前遇到過Update(),但並沒有意識到它實際上是一個UpdateAll(),並且我不需要事先選擇任何東西。謝謝! – mmo

+0

很高興聽到它解決了 –

+0

如果它工作。請將馬特評論標記爲答案。 –