import sys
import clr
import System
from System import DateTime
clr.AddReference("Microsoft.Office.Interop.Word")
import Microsoft.Office.Interop.Word as Word
def doc_replace_text(source_filename, tokens, values, destination_filename):
missing = System.Type.Missing
replaceAll = Word.WdReplace.wdReplaceAll
word_application = Word.ApplicationClass()
word_application.visible = False
document = word_application.Documents.Open(source_filename)
for i in range(len(tokens)):
for r in document.StoryRanges:
#print "i = %d, tokens[i] = %s, values[i] = %s" % (i, tokens[i], values[i])
r.Find.Text = tokens[i]
r.Find.Replacement.Text = values[i]
r.Find.Wrap = Word.WdFindWrap.wdFindContinue
r.Find.Execute(missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, replaceAll, missing, missing, missing, missing)
document.SaveAs(destination_filename)
document.Close()
document = None
word_application.Quit()
word_application = None
source_filename = "C:\\tmp\\src.doc"
destination_filename = "C:\\tmp\\dst.doc"
tokens = ["[T1]"]
values = ['q']
doc_replace_text(source_filename, tokens, values, destination_filename)
https://gist.github.com/1049552
В файле src.doc должно поменяться на q.
Код отрабатывает без ошибок, но в dst.doc - точная копия src.doc.
Windows 7 x86, Office 2007, IronPython 2.7.3
В чем может быть проблема?