6

私は現時点でかなり困惑しています。Can I use Win32 COM to replace text inside a word document? に基づく (Python で) テンプレート ワード doc からワード doc を生成する単純なテンプレート システムをコーディングすることができました。

私の問題は、「テキストフィールド」のテキストがそのように見つからないことです。Word 自体にも、すべてを検索するオプションはありません。実際には、「メイン ドキュメント」と「テキスト フィールド」のどちらかを選択する必要があります。Windows の世界に慣れていないので、VBA ドキュメントを参照しようとしましたが、助けが見つかりませんでした (おそらく「テキスト フィールド」が非常に一般的な用語であるため)。

word.Documents.Open(f)
wdFindContinue = 1
wdReplaceAll = 2
find_str = '\{\{(*)\}\}'
find = word.Selection.Find

find.Execute(find_str, False, False, True, False, False, \
True, wdFindContinue, False, False, False)

while find.Found:
    t = word.Selection.Text.__str__()
    r = process_placeholder(t, answer_data, question_data)

    if type(r) == dict:
        errors.append(r)
    else:
        find.Execute(t, False, True, False, False, False, \
        True, False, False, r, wdReplaceAll)

これは私のコードの関連部分です。私は今ではすべての問題を自分で回避することができました (ヒント: 文字列を 256 文字以上に置き換えたい場合は、クリップボードなどを介して行う必要があります...)

4

1 に答える 1

2

おそらく、UNOコンポーネント テクノロジを使用して OpenOffice APIを使用できます。Python-UNO ブリッジを使用すると、ヘッドレス モードで実行されている OpenOffice インスタンスに接続できます。開始するには、チュートリアルを参照してください。 これはあなたのシナリオではやり過ぎかもしれませんが、非常に強力で柔軟なソリューションです。

于 2010-05-17T21:35:49.203 に答える