Find and Replace text within headers with Win32COM

时间:2015-06-30 13:36:37

标签: python replace ms-word office-interop win32com

I'd like to find some words in the headers of a Word document and replace them with other words : I've done this in the body of the document with the following code, and it works fine.

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)

The problem is that this code doesn't work for headers and footers. I've also tried this :

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)

But it doesn't work better (despite the fact that I don't have any error message).

Does someone have an idea on how to do that? Another information is that I have an image inserted in the headers as well, I don't know if it matters or not.

1 个答案:

答案 0 :(得分:1)

打开文档后,您必须激活页眉/页脚窗格。 语言Visual Basic。将语法更改为python

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

表示标题和

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

页脚

然后搜索/替换

要将窗格更改为主要部分

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