2015-06-30 3 views
0

Я хотел бы найти несколько слов в заголовках документа Word и заменить их другими словами: я сделал это в теле документа со следующим кодом и он отлично работает.Найти и заменить текст в заголовках с помощью Win32COM

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) 

Проблема в том, что этот код не работает для верхних и нижних колонтитулов. Я также попытался это:

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) 

Но это не работает лучше (несмотря на то, что у меня нет никаких сообщений об ошибках).

Есть ли у кого-нибудь идеи о том, как это сделать? Другая информация заключается в том, что у меня есть изображение, вставленное в заголовки, а также, я не знаю, имеет ли это значение или нет.

ответ

0

Вы должны активировать панель заголовка/нижнего колонтитула после открытого документа. Язык Visual Basic. Изменить синтаксис питона

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

для заголовка и

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

для колонтитула

Тогда поиск/замена

Чтобы изменить панель для основного использования части

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

Это работает отлично! Большое вам спасибо: D –

Смежные вопросы