我试图让Powershell脚本工作,需要更新我在所有页面的页眉和页脚中的所有字段。但即使经过数小时的研究,我也没有比能够更新正文中的字段更进一步。当然,这非常有用,而且我也在使用它,但我还想更新标题中的字段。
我担心除了向您展示更新文档中所有字段的片段之外,我无法提供更多帮助。所以就是这样。
objWord = New-Object -ComObject word.application
$objWord.ActiveDocument.Fields.Update()
所以,请帮助。
答案 0 :(得分:1)
从今天早上起我一直在四处寻找,但找不到适合我的方法。 (对OP的类似要求)
我检查了Adil的链接,但它没有更新所有文档。
我需要更新我添加到文档中的外部链接(对象)。正文,页眉和页脚需要更新,但由于许多模板使用多个部分我遇到了问题。
我认为在Sections循环期间存在一些浪费,但它确保整个文档更新。
这是我的解决方案:
# Open Word Instance (Use True for Debugging)
$Word = New-Object -ComObject "Word.Application"
$Word.Visible = $True
# Open Template for Editing
$Doc = $Word.Documents.Open($file.FullName)
# Update Main Content
$Word.ActiveDocument.Fields.Update()
# Iterate through Sections
foreach ($Section in $Doc.Sections)
{
# Update Header
$Header = $Section.Headers.Item(1)
$Header.Range.Fields.Update()
# Update Footer
$Footer = $Section.Footers.Item(1)
$Footer.Range.Fields.Update()
}
# Save and Close Template
$Doc.Save()
$Doc.Close()
# Exit Word Instance
$Word.Quit()
答案 1 :(得分:0)
上面的答案并没有为我们的文档做出相应的改进,但以下是:
$doc.Fields.Update() | Out-Null
foreach ($section in $doc.Sections)
{
ForEach ($header in $section.Headers)
{
$header.Range.Fields.Update() | Out-Null
}
ForEach ($footer in $section.Footers)
{
$footer.Range.Fields.Update() | Out-Null
}
}