Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 06-02-2014
shoulder shoulder is offline
Miembro
 
Registrado: abr 2008
Posts: 441
Poder: 17
shoulder Va por buen camino
Plantilla Word dentro de un While

Puedo imprimir por ejemplo 30 archivos .doc (es la misma plantilla) cambia solo apellido y nombre dentro de un While?.

Como hago para abrirlo, mandarlo a la impresora, cerrarlo.. volverlo a abrir...sin que el usuario vea abrirse 20 words en pantalla?.

Gracias.
Responder Con Cita
  #2  
Antiguo 06-02-2014
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 3.471
Poder: 21
newtron Va camino a la fama
Hola.

Este trozo de código recorre una tabla, abre un documento word, sustituye unos campos determinados por su valor en la tabla, envía a imprimir y continua con el siguiente registro:

Código Delphi [-]
   TablaCuentas.First;
   while not TablaCuentas.Eof do begin
     // Ejecuto una impresión sustituyendo los campos de las tablas
     // de datos de empresa y cuentas por cada registro
     // suponiendo que el campo a buscar es XXXX.XXXX (Tabla.campo)
     WordApplication1 := CreateOleObject('Word.Application');
     WordApplication1.Visible := False;
     WordApplication1.Documents.Open(NtEditImpreso.Text);
     WordApplication1.Selection.Find.ClearFormatting;
     WordApplication1.Selection.Find.Forward := vForward;
     WordApplication1.Selection.Find.Wrap := vWrap;
     WordApplication1.Selection.Find.Format := False;
     WordApplication1.Selection.Find.MatchWholeWord := False;
     WordApplication1.Selection.Find.MatchSoundsLike := False;
     WordApplication1.Selection.Find.MatchAllWordForms := False;
     // Sustituyo campos de cuentas
     for N:=0 to  TablaCuentas.FieldCount-1 do begin
       vFindText := '['+'TABLA.'+TablaCuentas.Fields[N].FieldName+']' ;
       vReplaceWith := TablaCuentas.FieldByname(TablaCuentas.Fields[N].FieldName).AsString;
       WordApplication1.Selection.Find.Text := vFindText;
       WordApplication1.Selection.Find.Replacement.Text := vReplaceWith;
       WordApplication1.Selection.Find.Execute(Replace := wdReplaceAll);
     end;
     WordApplication1.ActiveDocument.PrintOut;
     application.ProcessMessages;
     WordApplication1.ActiveDocument.close(0);
     WordApplication1.quit;
     TablaCuentas.Next;
   end;

las variables que tienes que usar son las siguientes:

Código Delphi [-]
var
  Documento: Variant;
  WordApplication1: Variant;
  vFindText : OleVariant;
  vReplaceWith : OleVariant;
  vWrap : OleVariant;
  vMatchCase : OleVariant;
  vMatchWholeWord : OleVariant;
  vReplace : OleVariant;
  vForward : OleVariant;
  Tabla,TablaCuentas: TedbTable;

y debes de agregar al "uses" del formulario:

Código Delphi [-]
uses 
  OleServer, WordXP, Comobj


Para determinar qué campos son los que hay que sustituir en el documento word lo que hago es identificarlos de la manera siguiente:

[TABLA.CAMPO1]....texto texto texto....[TABLA.CAMPO2] ... etc.

Creo que no se me olvida nada, si no te funciona me lo comentas.

Saludos
__________________
Be water my friend.
Responder Con Cita
  #3  
Antiguo 06-02-2014
shoulder shoulder is offline
Miembro
 
Registrado: abr 2008
Posts: 441
Poder: 17
shoulder Va por buen camino
Word

Gracias!!!
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
word - Plantilla - abrir - grabar como shoulder Varios 3 15-06-2012 21:16:03
Acceso directo a plantilla de Word roman Windows 16 08-10-2008 22:22:03
modificar una plantilla de word luxus OOP 9 26-08-2008 21:13:48
word:rellenar plantilla. ¿mediante busacar y reemplazar? rikitriki Servers 0 16-07-2007 12:56:48
Registro en Plantilla Word JulioGO Firebird e Interbase 2 12-09-2004 00:42:34


La franja horaria es GMT +2. Ahora son las 17:02:22.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi