Jestem całkiem zaskoczony w tej chwili. Na podstawie Can I use Win32 COM to replace text inside a word document? udało mi się zakodować prosty system szablonów, który generuje dokumenty tekstowe z szablonu dokumentu doc (w języku Python).Jak wyszukiwać i zastępować wszystkie wystąpienia ciągu znaków w dokumencie MS Word z pythonem?
Mój problem polega na tym, że tekst w "polach tekstowych" nie znajduje się w ten sposób. Nawet w samym programie Word nie ma opcji przeszukiwania wszystkiego - musisz wybrać między "Dokumentem głównym" i "Pola tekstowe". Będąc nowicjuszem w świecie Windowsa, próbowałem przeglądać dokumenty VBA, ale nie znalazłem żadnej pomocy (prawdopodobnie ze względu na "pole tekstowe" będące bardzo częstym określeniem).
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)
To jest odpowiednia część mojego kodu. W tej chwili udało mi się samodzielnie obejść wszystkie problemy (podpowiedź: jeśli chcesz zastąpić ciągi zawierające więcej niż 256 znaków, musisz to zrobić za pomocą schowka itp.)
Nie, przepraszam. Używanie MS Word jest obowiązkowe. – Mark
Ok. Ale OpenOffice może obsługiwać pliki MS Word całkiem dobrze. Możesz także przetwarzać pliki Worda. Używam tego mostu do generowania dokumentów w różnych formatach, takich jak doc, ppt, odt lub pdf. –
Czy przetwarzanie jest również wykonywane w MS Word? –