![]() |
Insertar datos a word
Holas amigos del foro, hace tiempo que tengo la idea siguiente:
terner una plantilla en word mas o menos asi: Señor {nombre} {direccion} Estimado, le comunicamos que con fecha {fecha}, usted tiene una deuda de {deuda}, le rogamos regularizar su situacion. Atentamen el cobrador Ahora, los datos en {}, deberiaqn ser sacados de una base de datos en interbase y crear una aplicacion que fuera insertando esos datos en word, es posible?, me gustaria mucho si me dieron algunas ideas, gracias |
Es muy sencillo. Creas la plantilla .dot en Word usando campos de tipo DocVariable (menú Insertar|Campo). A cada campo le asignas un nombre al momento de insertarlo. El documento .dot te quedaría más o menos así:
Conviene que actives la visualización de campos en el menú Herramientas|Opciones|Ver. En Delphi, puedes llenar la plantilla así:
Claro está que los valores que asignes a los campos los puedes tomar de una consulta a la base de datos o de cualquier otra fuente. // Saludos |
Me intereso el huilo y segui las instrucciones de Roman. Pero tengo una duda. Como puedo ver los resultados? Ejecute la aplicación pero no vi resultados en la plantilla. Es necesario realizar algún paso adicional?
Muchas Gracias. |
|
Cita:
Después de los pasos anteriores necesitas visualizar Word con
Con esto debe aparecerte ya la ventana de Word con el nuevo documento. // Saludos |
gracias roman
segui los pasos que dijiste incluso el Word.Visible := true; me muestra la carta pero no los datos: justo como lo dijiste, use casi el mismo ejemplo, la plantilla asi:
Cita:
Cita:
|
¡Vaya! ¡Qué omisión! Acabo de revisar una vez más el código donde tengo implementado algo similar y veo que, en efecto, olvidaba algo que parece ser imprescindible.
Espero que ahora sí. // Saludos |
hola roman, gracias por tu ayuda pero de todas meneras me muestra el doc, pero sigue apereciendo con el nombre de campo en vez del valor.
|
Hola, a mi el ejemplo me funciona correctamente, pero tengo una duda. Me gustaria que automaticamente el documento se guardara con un nombre que yo especificara. Busque en google pero no encontre nada, lo unico el parametro Save, Word.Documents.Save; que hace que se habra un cuadro de dialogo pidiendo el nombre del archivo. Pero a mi lo que me gustaria es que ya puediera especificar de modo transparente al usuario el nombre del archivo.
un saludo y gracias |
No actualiza los datos
He probado el código que proponéis, pues es justamente lo que llevaba buscando un tiempo, el problema es que no me actualiza la sentencia de word y el documento lo abre pero sin los datos que le envío desde Delphi, que mas nos podría faltar en este código. Gracias de antemano.:eek:
|
Solucionado en primera orden
Probando he visto que los campos de Word hay que activarlos y listo.
|
Como, activarlos?
|
Activar los campos
Estoy buscando la forma de activar directamente los campos desde Delphi, pues ocurre lo siguiente.
Desde el propio Word hay que ir campo por campo uno a uno, entonces necesito desde delphi abrir el documento de word activando los campos, me imagino que estos campos deben tener una propiedad para activarlos, será de esta forma o bien creando una macro en word y ejecutarla desde Delphi, voy a probar a ver si lo consigo, si alguien lo consigue antes que yo, que lo diga, gracias, |
Lo encontré
Para activar los variables en word basta con lanzar la siguiente instrucción:
documento.Fields.ToggleShowCodes y con esto conseguimos activar los campos en word y por tanto que se muestren los datos.:) |
sigo con problemas, este mi código delphi
esta es mi plantilla: Carta El señor {MERGEFIELD nombres \* MERGEFORMAT} ewl resulto me sale exactamente lo mismo que la plantilla |
Yo lo tengo casi igual
Mira yo tengo el código igual solo que el update de las variables lo hago antes que el ToggleShowCodes y me funciona.
No se si las variables de word las insertas a mano o desde la opción Insertar --> Campo y seleccionas la opción DocVariable A ver si está ahí la cuestión. |
Un par de comentarios:
ToggleShowCodes, más que activar los campos, alterna entre ver los códigos o ver los valores. Si en Word tenemos desmarcada la opción de ver los códigos, entonces ToggleShowCodes la marcará y lo que veremos son los códigos y no los valores. El que se muestren los códigos o valores no afecta la impresión del documento. Siempre se imprimirán los valores actuales. Por otra parte, veo que Manuel usa: Código:
{MERGEFIELD nombres \* MERGEFORMAT} Código:
{DOCVARIABLE nombre\* MERGEFORMAT} |
a pesar de todo los cambios incluso los que me propobe roman, igual sigo sin ver el resultado.
|
¿Puedes preparar una pequeña plantilla de muestra y el código? De ser así, ponlo en un zip y adjúntalo al mensaje.
// Saludos |
1 Archivos Adjunto(s)
Gracias roman por tu interes, te mando plantilla
|
La franja horaria es GMT +2. Ahora son las 07:06:48. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi