Ich bin im Moment ziemlich ratlos. Ausgehend von Kann ich Win32 COM verwenden, um Text in einem Word-Dokument zu ersetzen? Ich war in der Lage, ein einfaches Vorlagensystem zu programmieren, das Word-Dokumente aus einer Word-Dokument-Vorlage generiert (in Python).
Mein Problem ist, dass der Text in "Textfeldern" nicht auf diese Weise gefunden wird. Auch in Word selbst gibt es keine Möglichkeit, alles zu durchsuchen - man muss tatsächlich zwischen "Hauptdokument" und "Textfelder" wählen. Da ich neu in der Windows-Welt bin, habe ich versucht, die VBA-Dokumente zu durchsuchen, aber keine Hilfe gefunden (wahrscheinlich, weil "Textfeld" ein sehr gebräuchlicher Begriff ist).
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)
Dies ist der relevante Teil meines Codes. Ich konnte inzwischen alle Probleme selbst umgehen (Hinweis: wenn Sie Zeichenketten mit mehr als 256 Zeichen ersetzen wollen, müssen Sie dies über die Zwischenablage tun, etc ...)