Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Go Back   Foros Club Delphi > Principal > Servers
Register FAQ Members List Calendar Guía de estilo Today's Posts

Reply
 
Thread Tools Search this Thread Display Modes
  #1  
Old 02/03/2020
Espartaco's Avatar
[Espartaco] Espartaco is offline
Miembro Premium
 
Join Date: Oct 2005
Posts: 107
Poder: 21
Espartaco Va por buen camino
Cerrar bien archivo word.

Hola amigos, estoy abriendo un archivo de word con marcadores y dandoles valor para luego imprimir el archivo y cerrarlo. La asignacion de los datos a los marcadores lo hago sin problema, al igual que el abrir el archivo, pero cuando lo quiero cerrar descartando los cambios no los descarta y los graba. Entonces al volver a abrirlo me repito el valor del marcador. Es un bucle que debe ser transparente para el usuario. Todo lo hace bien excepto que no cierra el archivo descartando los cambios, ni cierra del todo la aplicacion de word.
Este es el codigo de la rutina que debe hacer lo que comento:
Código Delphi [-]
procedure TGestCertificados.BitBtn3Click(Sender: TObject);
var Fichero, Marcador, Contenido, SoloLectura, SalvarCambios, FormatoOriginal, Ruta : OleVariant;
   MiDocumento : _document;
    a: integer;

   procedure SustituirMarcador;
   begin
        if MiDocumento.Bookmarks.Exists(Marcador) then MiDocumento.Bookmarks.Item(Marcador).Range.InsertBefore(Contenido);
   end;
begin
 panel5.Visible:=True;
 Query1.First;
 a:=1;
        while not Query1.Eof do
        begin
        if a>SpinEdit2.Value then a:=1;
            while a<=SpinEdit2.Value do
            begin
            //impresion del certificado
   // Conexión con Word
   try
   MiWord.Connect;
   except
   ShowMessage('WordXP no está instalado en este equipo');
   Abort;
   end;
     Fichero:='c:\gesdonaciones\certificado.docx';

   // abrir el documento seleccionado con los parámetros necesarios
   SoloLectura:=True;
   MiDocumento:=MiWord.Documents.Open(Fichero, EmptyParam, SoloLectura,
        EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam,
        EmptyParam);

   // comienzan las sustituciones de los marcadores.
   Marcador:='FECHA';
   Contenido:=FormatdateTime('dd "de " mmmm "de " yyyy',DateTimePicker1.Date);
   SustituirMarcador;
   Marcador:='DONANTE';
   Contenido:=QUERY1['NOMBRE']+' '+QUERY1['APELLIDOS'];
   SustituirMarcador;
   Marcador:='EJERCICIO';
   Contenido:=SpinEdit1.Text;
   SustituirMarcador;
   Marcador:='IMPORTE';
   Contenido:=CurrToStr(QUERY1['IMPORTE']);
   SustituirMarcador;
   Marcador:='NOMPARROCO';
   Contenido:=DM.DbDatParroquia['PARROCO'];
   SustituirMarcador;
   Marcador:='PARROCO';
   Contenido:=DM.DbDatParroquia['PARROCO'];
   SustituirMarcador;
   MiWord.PrintOut; 
   MiWord.Visible:=False; 
   SalvarCambios:=wdDoNotSaveChanges;
   FormatoOriginal:=unAssigned;
   Ruta:=unAssigned;
   try
   MiWord.Disconnect;
   except
   on e:Exception do
   begin
     ShowMessage('Se ha producido el error '+e.Message);
     MiWord.Disconnect;
   end;
   end;
            //fin de la impresion del certificado
            a:=a+1;
            Query1.Next;
            end; //incremento de a
        if Application.MessageBox(
        pchar(  '¿Desea continuar con la Impresión?'
        +#13#10
        +#13#10),
        pchar('Atención'),
        MB_YESNO+MB_ICONWARNING+MB_DEFBUTTON2)=IDNO then
        begin
        panel5.Visible:=False;
        Query1.First;
        Exit;
        end;
        end;  //posicion de query1
end;

Espero vuestras noticias muchas gracias.
Reply With Quote
  #2  
Old 04/03/2020
Espartaco's Avatar
[Espartaco] Espartaco is offline
Miembro Premium
 
Join Date: Oct 2005
Posts: 107
Poder: 21
Espartaco Va por buen camino
Vuelvo otra vez porque lo he solucionado por si le vale a otra persona.

Lo que he hecho ha sido sacar del bucle la conexion y la desconexion, y para cerrar el archivo he puesto esto

Código Delphi [-]
miword.Documents.Close(Salvarcambios,formatooriginal,Ruta);

al final de cada impresion.

Para cerrar la sesion de word que se queda abierta sin ningun archivo, hay que asignarle un archivo y despues cerrarla, asi

Código Delphi [-]
MiDocumento:=MiWord.Documents.Open(Fichero, EmptyParam, SoloLectura,
        EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam,
        EmptyParam);
Miword.Quit(Salvarcambios,Ruta);

Y ya todo funciona correctamente.

Un saludo a todos, espero haber ayudado a alguien.
Reply With Quote
  #3  
Old 04/03/2020
Casimiro Noteví's Avatar
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Join Date: Sep 2004
Location: En algún lugar.
Posts: 32,700
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Reply With Quote
  #4  
Old 10/03/2020
juanjuju23 juanjuju23 is offline
Registrado
 
Join Date: Oct 2019
Posts: 2
Poder: 0
juanjuju23 Va por buen camino
Genial, me sirve esta info

saludos
Reply With Quote
Reply



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
Olecontainer no me lee bien los ficheros de Word TheRafa Servers 2 04/06/2010 03:02
Error al cerrar el word URBANO Varios 0 02/02/2008 12:37
Cerrar Documento y no Word bbjb Servers 2 22/09/2006 00:19
Imprimir y Cerrar Word yorllito Servers 2 18/05/2006 02:33
Porque no realiza bien el Cmmit o bien un ApplyUpdates(-1)? Luis Alberto Varios 6 14/12/2005 22:44


All times are GMT +2. The time now is 08:51.


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