[英]Find and Replace text within headers with Win32COM
我想在Word文檔的標題中找到一些單詞,然后用其他單詞替換它們:我已經在文檔正文中使用以下代碼完成了此任務,並且效果很好。
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)
但這並不能更好地工作(盡管我沒有任何錯誤消息)。
有人對此有想法嗎? 另一個信息是我在標題中也插入了一個圖像,我不知道這是否重要。
打開文檔后,您必須激活頁眉/頁腳窗格。 語言Visual Basic。 將語法更改為python
ActiveDocument.ActiveWindow.Panes(1).View.SeekView=wdSeekCurrentPageHeader
用於標題和
ActiveDocument.ActiveWindow.Panes(1).View.SeekView = wdSeekCurrentPageFooter
用於頁腳
然后搜索/替換
要將窗格更改為主要部分,請使用
ActiveDocument.ActiveWindow.Panes(1).View.SeekView = wdSeekMainDocument
您的解決方案對我不起作用,我仍然只能在正文中替換單詞。 這是我的代碼
def replace(word,doc):
today = date.today()
data = today.strftime("%d.%m.%Y")
pier = '19S'#input('Inserisci pier:')
code = '161'#input('Inserisci codice:')
FromTo = {"$DATA$" : data,
"$PIER$" : pier,
"$CODE$" :code}
const = win32.constants
wdFindContinue = 1
wdReplaceAll = 2
#SOSTITUISCI TESTO,HEADER E FOOTER
for sel in [const.wdSeekCurrentPageFooter,const.wdSeekCurrentPageHeader,const.wdSeekMainDocument]:
for From in FromTo.keys():
word.ActiveDocument.ActiveWindow.Panes(1).View.SeekView = sel
word.Selection.Find.Execute(From, False, False, False, False, False, True, wdFindContinue, False, FromTo[From],wdReplaceAll)
a = 1
return a
有什么提示嗎?
謝謝
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.