Python を使用して、Word 文書内のテキストを置換するために Word を自動化しようとしています。(それが重要な場合はWord 2003とPython 2.4を使用しています)
以下の replace メソッドの最初の部分は、テキスト ボックス内のテキスト以外のすべてに機能します。テキストが選択されないだけです。Word に手動でアクセスして ctrl-A を押すと、テキスト ボックス以外のすべてのテキストが選択されていることに気付きました。
これまでの私のコードは次のとおりです。
class Word:
def __init__(self,visible=0,screenupdating=0):
pythoncom.CoInitialize()
self.app=gencache.EnsureDispatch(WORD)
self.app.Visible = visible
self.app.DisplayAlerts = 0
self.app.ScreenUpdating = screenupdating
print 'Starting word'
def open(self,doc):
self.opendoc=os.path.basename(doc)
self.app.Documents.Open(FileName=doc)
def replace(self,source,target):
if target=='':target=' '
alltext=self.app.Documents(self.opendoc).Range(Start=0,End=self.app.Documents(self.opendoc).Characters.Count) #select all
alltext.Find.Text = source
alltext.Find.Replacement.Text = target
alltext.Find.Execute(Replace=1,Forward=True)
#Special handling to do replace in text boxes
#http://word.tips.net/Pages/T003879_Updating_a_Field_in_a_Text_Box.html
for shp in self.app.Documents(self.opendoc).Shapes:
if shp.TextFrame.HasText:
shp.TextFrame.TextRange.Find.Text = source
shp.TextFrame.TextRange.Find.Replacement.Text = target
shp.TextFrame.TextRange.Find.Execute(Replace=1,Forward=True)
#My Usage
word=Word(visible=1,screenupdating=1)
word.open(r'C:\Invoice Automation\testTB.doc')
word.replace('[PGN]','1')
for shp in self.app .. セクションは、テキスト ボックスをヒットする私の試みです。テキストボックスが見つかったようですが、何も置き換えられません。