2015-06-29 122 views
0

我,我真的不能用Python腳本2個星期前我就發現#1和完美的工作,直到昨天瞭解的問題(與以不變應萬變!)Find.Execute不包工作Win32com

我收到了一份文件,希望找到一個單詞列表並用其他單詞替換它們。這裏是我的代碼:

import win32com.client 

word = win32com.client.DispatchEx("Word.Application") 
word.Visible = True 
word.DisplayAlerts = False 
word.Documents.Open(path) 

FromTo = {"<#TITLE#>":"The title I want", "<#COMPANY#>":"My Company"} 

for From in FromTo.keys(): 
    word.Selection.Find.Text = From 
    word.Selection.Find.Replacement.Text = FromTo[From] 
    word.Selection.Find.Execute(Replace=2, Forward=True) 

word.ActiveDocument.SaveAs(path) 

的事情是,打開文檔時,發現文本正確選擇,但沒有任何反應的代碼來排隊word.Selection.Find.Execute(Replace=2, Forward=True)。之後通常保存文檔,並且沒有錯誤消息。

有人知道爲什麼這段代碼不起作用嗎?很奇怪,相同的代碼在兩週前工作,現在不做任何事情。

感謝您的幫助!

+0

您的代碼也不適用於我。檢查[this](http://stackoverflow.com/questions/1045628/can-i-use-win32-com-to-replace-text-inside-a-word-document)問題 - 第二個答案由'bernie '代碼有效(對我來說),如果我用你的'執行'行替換(必要時替換變量)。我會留給你找出爲什麼:) – SiHa

+0

另外,使用'from From,To inTo.items():',並用'To替換'FromTo [From]'將會更加Pythonic '。更需要使用小寫變量名稱,但要注意'from'是一個關鍵字。 – SiHa

回答

0

我知道這是舊的,但我有同樣的問題,發現如果我將site_packages \ win32com中的gen_py更改爲xxgen_py(實質上使其不可用),我不再有這個問題。我不確定發生了什麼,但這是我能夠用fin.execute實際替換單詞而不是突出顯示的唯一方法。

編輯:在以前的答案中使用其他替換方法爲我工作,保留gen_py文件夾。