2015-06-29 52 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文件夹。