PDA

Ver la Versión Completa : Word desde Delphi


Ferrari
16-12-2009, 19:05:32
Hola salu2...tengo una duda espero y alguien haya tenido la experiencia..tengo una plantilla en word usando word para torpes y tengo un dataset con n registros....la plantilla contiene un logo y un texto X. Como puedo recorrer el dataset y que me inserte por cada registro una hoja nueva partiendo de la plantilla modelo ...salu2 Esto lo tenia con MailMerge pero el usuario requiere estar modificando dicho reporte por ello el cambio a una plantilla previamente diseñada. Si utilizo el ejemplo de Word para torpes solo agrego un record.....como hacer para que aparezcan N registros??

Neftali [Germán.Estévez]
17-12-2009, 10:28:23
Yo hace tiempo lo había hecho utilizando el MailMerge de Word.
Tenía preparada por un lado la plantilla en Word con los campos insertados y como fuente de Datos apuntaba a un fichero con los datos (en mi caso era un TXT, pero puede ser otro formato).

Cuando el usuario quería generar cartas o documentos, generaba desde el programa Delphi el TXT con los datos y a continuación lanzaba el MailMerge de Word y la impresión directa.

En mi caso eran las típicas cartas de "mailing", así que es bastante parecido a lo que tienes tú creo.

Es cuestion de investigar. en las últimas versiones de Word había cambiado la forma de llamarlo (a partir del 2000), así que el código del MailMerge no sirve, pero la idea creo que sigue siendo buena, es cuestión de encontrar cómo se llama al MailMerge en las nuevas versiones.

Ferrari
18-12-2009, 04:23:05
Grax Neftali...siempre fiel y dedicado a este foro, agradezco tu respuesta al menos me siento agradecido en tanto ke somos solo un 'buen' e foristas

identsoft
18-12-2009, 10:28:44
Yo le he resuelto de la siguiente forma en Delphi2006:
Hay que utilizar la uses ComObj


procedure TForm1.FormCreate(Sender: TObject);
var
fichero : String;
wrdMailMerge : Variant;
begin
wrdApp := CreateOleObject('Word.Application');
fichero := ExtractFilePath(Application.ExeName) + 'carta_combinar_correspondencia';
wrdDoc := wrdApp.Documents.Open(fichero);
wrdDoc.Select;
wrdDoc.MailMerge.opendatasource('fuente_de_datos');
wrdMailMerge := wrdDoc.MailMerge;
wrdapp.visible:= true;
Form1.Close;
end;

Funcionar, funciona.
Problemas: en Word 2007 hay que pinchar el boton de 'vista previa'

espero que sirva y espero que alguien lo mejore
Un saludo

Ferrari
20-12-2009, 05:02:02
identsoft...agradezco tu interes probando y te digo como nos va con la aplicacion salu2...:rolleyes: