В данный момент я довольно озадачен. Основано на Могу ли я использовать Win32 COM для замены текста в текстовом документе? Мне удалось написать простую систему шаблонов, которая генерирует документы документов из шаблона слова документа (в Python).
Моя проблема в том, что текст в «Текстовых полях» не находится таким образом. Даже в самом 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 символов, вы должны сделать это через буфер обмена и т. Д.)