[Word] Cerrar cualquier documento de Word de cualquier instancia

4 02 2009

Ya es el tercer post sobre esto, y a petición de un comentario de mi amigo David. Solo una pequeña modificación para cerrar los documentos de Word. Les platico a lo que se refiere y porque publico este post. Resulta que trabajamos con objetos de Word, validación de eventos sobre el Office 2007 y muchas veces tenemos la necesidad de reiniciar una aplicación de Office sin guardar cambios, pero resulta que sino controlamos bien la liberación de los recursos o de los objetos nos puede traer varios errores.

Lo que me preguntaron es como cerrar todos las instancias de Word, pero sin hacerlo desde los procesos como lo menciono en otro post, es decir que pasa si abro un archivo cualquiera y después creo un instancia (desde código) y necesito validar no se… que se cierren todos los documentos, o que se guarden con nombres específicos, que se yo.

En el siguiente ejemplo cerramos absolutamente todos los documentos sin importar la instancia.

Imports Word = Microsoft.Office.Interop.Word

Module Module1

    Sub Main()

        'Variables
        Dim AppWord As New Word.Global
        Dim doc As Word.Document

        'Aquí cerramos todos los documentos sin guardar cambios
        For Each doc In AppWord.Documents
            doc.Close(SaveChanges:=False)
        Next

        AppWord.Application.Quit(SaveChanges:=False)

    End Sub

End Module

Si se dan cuenta es muy similar a lo que publique en el post de cerrar los documentos a partir de una instancia, pero  aquí hacemos referencia a la aplicación Global, esa es la diferencia para poder cerrar todos los documentos de Word que se encuentren abiertos en nuestro Sistema.

Para ver que funciona, prueben abriendo varios archivos de Word y luego ejecuten el programa, verán que se cierran todos sin guardar cambios.

Saludos.

@nor

Etiquetas de Technorati: ,,,




[Word] Como cerrar los documentos de Word a partir de una instancia

4 02 2009

En el post anterior vimos como cerrar los objetos de Word en base a la lista del proceso del Sistema. En este ejemplo vamos a ver como cerrarlos a partir de una instancia, esto lo podemos usar cuando trabajamos con objetos de Word para verificar que el usuario haga algo o que se yo, pero aquí el ejemplo.

Imports Word = Microsoft.Office.Interop.Word

Module Module1

    Sub Main()

        'Variables
        Dim AppWord As New Word.Application
        Dim doc As Word.Document

        'Agregamos cuatro documentos en blanco y escribimos un texto
        For i As Integer = 0 To 4
            AppWord.Documents.Add()
            AppWord.Application.WindowState = Word.WdWindowState.wdWindowStateNormal
            AppWord.Visible = True
            AppWord.ActiveDocument.Sections(1).Range.Text = "Mi Documento numero:  " & i
        Next

        'Aquí cerramos todos los documentos sin guardar cambios
        For Each doc In AppWord.Documents
            doc.Close(SaveChanges:=False)
        Next
        AppWord.Quit(SaveChanges:=False)

    End Sub

End Module

Explicando el código.

Primero creamos una instancia de Word y un documento para poder hacer el recorrido por el arreglo de Documentos abiertos.

En el For creamos 5 documentos maximizamos la ventana y la mostramos, al mismo  tiempo que agregamos un texto al mismo.

Después por medio del For each recorremos todos los documentos que creamos (incluso sirve si los abrimos), los cerramos sin guardar cambios.

Por ultimo cerramos nuestra instancia de Word.

Espero que les sea de utilidad.

Saludos.

@nor.

Etiquetas de Technorati: ,,,




[Word] Cerrar todas las instancias de Word en el Sistema

4 02 2009

Muchas veces tenemos la necesidad de cerrar o tronar los procesos de un objeto de Office, en este caso de Word. El siguiente ejemplo muestra como hacer.

Imports System.Diagnostics

Module Module1

    Sub Main()
        Dim procs() = Process.GetProcesses
        Dim pr As Process
        For Each pr In procs
            If (pr.ProcessName = "WINWORD") Then
                pr.Kill()
            End If
        Next

    End Sub

End Module

Utilizamos el nombre de espacios Diagnostics, que nos permite obtener los procesos que se están ejecutando en el Sistema. lo que hacemos es obtener un arreglo de dichos procesos para después recorrerlos e identificar cuales son los que queremos tronar. Por ultimo ejecutamos el método Kill el cual detiene inmediatamente el proceso asociado.

Espero que les sea de utilidad, y como se observa en el ejemplo podemos aplicar esto a cualquier proceso, e incluso ejecutar algún otro que no este corriendo.

Saludos.

 

Etiquetas de Technorati: ,,,,




Dime como te llamas y te diré cuanto vales

4 02 2009

Esto es posible gracias a una WEB que se llama $timador, es una web que gracias a los criterios de indexación, popularidad, trafico, y más nos da un precio aproximado de lo que vale tu sitio en dólares. Bueno realmente de acuerdo con los criterios no podemos considerar una buen aplicación pero los invito a que le echen un vistazo y se diviertan.

Aquí les dejo la imagen aplicada a este blog y lo poco que vale :S

image

@ nor