![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
#4
|
|||
|
|||
|
Hola,
yo lo he hecho via copiar y pegar el documento en la nueva hoja: tenía que hacer un informe con diferentes apartados cada uno con diferentes plantillas y el elegir cual era la siguiente era algo caótico, muy dificil de hacer con el Rave Report, así que lo hago en Word, Habro la plantilla en cuestion, la modifico, la copio, cierro la plantilla sin grabar y la pego en el documento final. si quiero insertar página inserto un salto de página y así voy recorriendo todas las plantillas. El resultado es impresionante, el problema, cuando el documento es muy grande el tiempo que tarda en crearlo Tb lo es. El código para copiar y pegar es una cosa así: Código:
num:=ListaTexto.Count; // saco el número de marcadores a insertar
plant:=WordApp.Documents.Open(Plantilla); //abro la plantilla
for i:=0 to (num-1) do
begin
marcador:='M'+IntToStr(i); // nombre marcadores (M0 M1 ... )
bkmk := plant.Bookmarks.Item(marcador).Range;
bkmk.text:=ListaTexto.Strings[i]; //relleno los marcadores
end;
plant.sections.item(1).range.copy; //Copio la plantilla entera
plant.close(wdDoNotSaveChanges); //Cierro sin grabar la plantilla
DocFinal.Content.Paragraphs.Last.Range.InsertParagraphAfter; //inserto un parrafo
docFinal.Content.Paragraphs.Last.Range.paste; //Pego el texto en el parrafo nuevo
ListaTexto es un Tstrings con el texto a insertar antes hemos creado WordApp y docFinal: Código:
WordApp := CreateOleObject('Word.Application');
docFinal:=WordApp.Documents.add(PlantillaVaciaConMargenes);
Código:
docFinal.Content.Paragraphs.Last.Range.InsertParagraphAfter;
docFinal.Content.Paragraphs.Last.Range.InsertBreak(wdpagebreak);
PD: si tienes más dudas tengo un objeto entero que hace eso |
|
|
|