La Web del Programador: Comunidad de Programadores
 
    Pregunta:  5624 - CONTROLAR UNA INSTANCIA DE WORD DESDE VISUAL
Autor:  Gabriel
Me gustaría q me respondieseis al siguiente problema:
Quiero controlar Word desde Visual Basic de tal forma q pueda abrirlo si no lo está, aprovecharme de él para darle formato a un texto y mandarlo a imprimir como si fuera un informe pero hecho en Word.Pienso q lo hago todo bien pero no me cierra adecuadamente la aplicación y se queda en memoria.El código q adjunto es el siguiente:

Dim wordi As Word.Application
Dim nuevo As Word.Document
Set wordi = New Word.Application //Abro Word
Set nuevo = wordi.Documents.Add //Abro documento
nuevo.Activate //Lo pongo como activo
With selection
------- //Aquí le aplico el formato al texto
End with
nuevo.PrintOutRange:=wdPrintCurrentPage //imprimo
nuevo.close // cierro el documento
set wordi=nothing // cierro word

El problema es que me sigue en memoria la instancia de Word con los problemas al efectuar de nuevo la operación.
También me gustaría q me dijérais como controlar si Word está abierto para abrir un documento y cerrarlo sin q se cierre la instancia de Word
Un saludo

  Respuesta:  Joan-Baptista Fàbregas Muñoz
Hola.

El problema lo tienes basicamente al hacer "set wordi=nothing" con el word, esto lo unico que hace es desvincular el objeto wordi de la aplicacion de word, para cerrar realmente el Word, el codigo es:

wordi.Quit 'Esto realmente cierra el word
set wordi=nothing

En cuando a la segunda pregunta, seria muy complejo determinar si hay una aplicacion de word activa. En todo caso ten en cuenta que cuando abres directamente un documento de word sin abrir la aplicacion, si no esta vinculado, el mismo abre una aplicacion de word que puedes controlar accediendo a la propiedad Aplication del objeto documento. Esta propiedad realmente es un objeto aplicacion de Word que "contiene" al documento.

Espero haberte sido de ayuda.

Saludos.