Estoy bastante perplejo en este momento. Basado en Can I use Win32 COM to replace text inside a word document?, pude codificar un sistema de plantilla simple que genera documentos de palabras a partir de una plantilla Word Doc (en Python).¿Cómo busco y reemplazo todas las ocurrencias de una cadena en un documento de ms word con python?
Mi problema es que el texto en "Campos de texto" no se encuentra de esa manera. Incluso en Word no hay ninguna opción para buscar todo: en realidad debe elegir entre "Documento principal" y "Campos de texto". Como soy nuevo en el mundo de Windows, traté de buscar los documentos de VBA pero no encontré ayuda (probablemente debido a que el "campo de texto" es un término muy común).
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)
Esta es la parte relevante de mi código. Ya pude solucionar todos los problemas por mi cuenta (sugerencia: si quieres reemplazar cadenas con más de 256 caracteres, tienes que hacerlo en el portapapeles, etc.)
No, lo siento. El uso de MS Word es obligatorio. – Mark
Ok. Pero OpenOffice puede manejar archivos de MS Word bastante bien. Para que pueda procesar archivos de Word también. Utilizo este puente para generar documentos en varios formatos, como doc, ppt, odt o pdf. –
¿O el procesamiento debe hacerse en MS Word también? –