Powershell更新Word中页眉和页脚中的字段

时间:2014-07-22 12:49:42

标签: powershell com header ms-word footer

我试图让Powershell脚本工作,需要更新我在所有页面的页眉和页脚中的所有字段。但即使经过数小时的研究,我也没有比能够更新正文中的字段更进一步。当然,这非常有用,而且我也在使用它,但我还想更新标题中的字段。

我担心除了向您展示更新文档中所有字段的片段之外,我无法提供更多帮助。所以就是这样。

objWord = New-Object -ComObject word.application
$objWord.ActiveDocument.Fields.Update() 

所以,请帮助。

2 个答案:

答案 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
    }
}