Cita:
Empezado por VRO
...estoy intentando combinar correspondencia en word y por lo que he visto en el foro se hace con el MailMerge, le estoy empezando a utilizar y no se muy bien como hacerlo.
|
Puedes echarle un vistazo a ésta función; He de decir que no la he probado, así que no se si funcionará (ya me dirás...); Como mínimo te puede servir de guía para saber cómo va...
Código Delphi
[-]
procedure DoMSWordMerge(template_file, data_file: String; see_Word,
auto_print: Boolean);
var
MSWord: _Application;
MSDoc: _Document;
Unknown: IUnknown;
OLEResult: HResult;
OLEvar: OleVariant;
begin
OLEResult := GetActiveObject(CLASS_WordApplication, nil, Unknown);
if (OLEResult = MK_E_UNAVAILABLE) then
MSWord := CoWordApplication.Create else begin
OleCheck(OLEResult); OleCheck(Unknown.QueryInterface(_Application, MSWord));
end;
MSWord.Visible := see_Word; OLEvar := template_file; MSDoc := MSWord.Documents.OpenOld(OLEvar, EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam,
EmptyParam);
MSDoc.MAILMERGE.OpenDataSource(data_file, EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam);
OLEvar := False;
with MSDoc.MAILMERGE do begin
Destination := wdSendToNewDocument;
Datasource.FirstRecord := wdDefaultFirstRecord;
Datasource.LastRecord := Integer(wdDefaultLastRecord);
Execute(OLEvar); end;
MSDoc.Close(EmptyParam, EmptyParam, EmptyParam); OLEvar := 1;
MSDoc := MSWord.Documents.item(OLEvar);
if auto_print then begin
OLEvar := False; MSDoc.PrintOutOld(OLEvar, EmptyParam, EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam, EmptyParam);
OLEvar := wdDoNotSaveChanges; MSWord.Quit(OLEvar, EmptyParam, EmptyParam);
end;
MSDoc := nil;
MSWord := nil;
end;
Otra opción que a veces utilizo yo cuando tengo que hacer automatizaciones con Word/excel, es crear un macro que realice un determinado trabajo y luego echarle un vistazo al código. El VBA es bastante compresible y te puede dar una idea de por dónde tirar....
Aparte puedes mirar éstos links:
http://support.microsoft.com/default...b;EN-US;220607
http://support.microsoft.com/default...b;EN-US;220911
http://<a href="http://www.kayodeok....bmailmerge</a>