使用 Win32COM 查找和替换 headers 中的文本

Find and Replace text within headers with Win32COM

我想在 Word 文档的 headers 中找到一些词并用其他词替换它们:我在文档的 body 中使用以下代码完成了此操作,而且效果很好。

import win32com.client

wdFindContinue = 1
wdReplaceAll = 2        
app = win32com.client.DispatchEx("Word.Application")
app.Visible = 1
app.DisplayAlerts = 0
app.Documents.Open(document_path)

FromTo = {"<#TITLE#>":"My title", "<#DATE#>":"Today"}

for From in FromTo.keys():
        app.Selection.Find.Execute(From, False, False, False, False, False, True, wdFindContinue, False, FromTo[From], wdReplaceAll)

问题是此代码不适用于 headers 和页脚。我也试过这个:

app.ActiveDocument.Sections(1).Headers(win32com.client.constants.wdHeaderFooterPrimary).Range.Select
app.Selection.Find.Execute(From, False, False, False, False, False, True, wdFindContinue, False, FromTo[From], wdReplaceAll)

但它并没有更好地工作(尽管事实上我没有任何错误消息)。

有人知道怎么做吗?另一个信息是我在headers中也插入了一张图片,我不知道是否重要。

您必须在打开文档后激活 header/footer 窗格。 语言 Visual basic。将语法更改为 python

   ActiveDocument.ActiveWindow.Panes(1).View.SeekView=wdSeekCurrentPageHeader

对于 header 和

ActiveDocument.ActiveWindow.Panes(1).View.SeekView = wdSeekCurrentPageFooter

页脚

然后search/replace

要将窗格更改为主要部分,请使用

ActiveDocument.ActiveWindow.Panes(1).View.SeekView = wdSeekMainDocument