Find.Execute无法使用Win32com包

时间:2015-06-29 10:39:06

标签: python replace ms-word win32com

我遇到了一个问题,我在2周前在Stackoverflow上找到的Python脚本实际上无法理解这个问题,直到昨天才完美运行(完全没有变化!)

我有一个文档,我想找到一个单词列表,并用其他单词替换它们。这是我的代码:

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)时没有任何反应。之后通常保存文档,我没有收到任何错误消息。

有人知道为什么这段代码不起作用?两周前相同的代码工作并且现在没有做任何事情,这很奇怪。

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

我知道这是旧的,但我遇到了同样的问题,发现如果我将gen_py更改为site-packages \ win32com中的xxgen_py(基本上使其无法使用),我就不再有这个问题了。我不知道发生了什么事,但这是我能让fin.execute真正替换单词的唯一方法,而不仅仅是突出显示。

编辑:使用上一个回答中的其他替换方法为我工作,保留gen_py文件夹。