Macro excel para cerrar word

Lo que pretendo es crear una macro en Excel que me abra una deteterminada página word para imprimirla (explicado a groso modo), el problema es que no consigo crearla para que funcione de forma eficiente ya que por un lado al abrir el word tengo que controlar que no esté abierto porque no quiero abrilo en modo "Sólo lectura".
En definitiva lo que necesito es que si el word ya está abierto cierre el documento (ya que tiene que cargar datos del excel) y lo vuelva abrir y si no está abierto pues simplemente que lo abra.

2 Respuestas

Respuesta
1

Veo que esta pregunta es antigua sin embargo encontré la respuesta en otro foro. Y bueno no hace daño tener información por todos lados, el código no es mio pero me sirvió:

Sub cerrarWord()
    Dim X As Variant

    X = Shell("powershell.exe kill -processname winword", 1)

End Sub

Y listo ese código puedoes ponerlo donde quieras o llamar esta rutina desde la tuya (cierra todos los doc de word que tengas abiertos EN TU PC)

Respuesta
-1
Aquí te van las explicaciones:
Importar datos de Word a Excel
Al importar datos a Excel (en este caso texto) de un documento Word podemos aplicar la función VBA de Create Object. Esta función nos deja 'conectar' con los otros programas Office. De esta manera es bastante sencillo mandar datos entre Excel y el resto del suite Office de Microsoft.
Este ejemplo de Excel VBA presenta una manera de importar las filas de texto de un documento Word. El usuario elige desde que documento Word la importación se va a realizar, mediante el diálogo Windows predefinido de 'Abrir'.
Para que esto funcione, no olvides marcar la casilla de Microsoft Word x.xx Object Library en el menú de 'Herramientas - Referencias' del editor VBA.
Option Base 1
Public varText()
Sub abrirWordDesdeExcel()
Dim strWordArchivo As Variant
Dim i, r, intLineas As Integer
Dim appWord As Word.Application
Dim appDoc As Word.Document
Dim EstaAbierto As Boolean
Dim rngDoc As Word.Range
'dialogo 'abrir archivo'
strWordArchivo = Application.GetOpenFilename _
("Documentos Word (*.doc), *.doc"): On Error GoTo 99
'crear el objeto Word
Set appWord = CreateObject("Word.Application")
Set appDoc = appWord.Documents.Open(strWordArchivo)
'leer archivo Word
intLineas = appDoc.Paragraphs.Count: ReDim varText(intLineas)
r = 1
For i = 1 To intLineas
Set rngDoc = appDoc.Range( _
Start:=appDoc.Paragraphs(i).Range.Start, _
End:=appDoc.Paragraphs(i).Range.End)
varText(i) = rngDoc.Text
r = r + 1
Next i
'traspasar datos a celdas (o utilizar matriz para otra cosa de VB...)
For x = 1 To UBound(varText)
Cells(x, 1) = varText(x)
Next x
'terminar los objetos creados
appDoc.Close: Set appDoc = Nothing
appWord.Quit: Set appWord = Nothing
99:
End Sub
Vale ya sabemos abrir un documento de Word, si no necesitas importar lineas de texto pues quita todas las lineas de código y te quedas con la apertura. Como queremos que nos avise si el archivo ya está abierto insertas estas lineas antes de abrirlo:
Dim EstaAbierto As Boolean
If appDoc= "ElNombreDeTu Documento.doc" Then
EstaAbierto = True
End If
If EstaAbierto Then
'Tus instrucciones por ejemplo MsgBox "Abierto"
Else
'Tus instrucciones por ejemplo MsgBox "Cerrado"
End If
Mira a ver si te funciona yo no puedo poner el archivo en un servidor para comprobarlo, pero en teoría debería de funcionar.
>Un saludo
>Julio
No me aclaro con el código que me has pasado, he intentado aplicarlo a lo que estoy haciendo pero sin éxito.
Como creo que no me explicado bien intentaré ser más especifico.
Tengo una hoja excel en la cual se actualizan unos datos que sirve de base de datos para un documento word que quiero imprimir.
Entonces desde la macro quiero abrir ese documento word del cual conozco su ubicación y su nombre, pero desconozco si en el momento de ejecutar la macro está abierto o no, sino está abierto no tengo problema porque lo abro y ya está, pero si ya está abierto tengo que cerrarlo para que al abrirlo haya actualizado los datos que se han cambiado en la Excel.
Espero haberme explicado mejor.
Gracias por tu tiempo.
Si un archivo está en uso cuando se intenta acceder a él, el propio Office tiene la herramienta que te avisa de que está abierto, y que solo puedes acceder a él en modo de "Solo lectura" o Esperar a que esté disponible o eliges la opción de que te avisará cuando esté disponible. El problema es que tú el archivo que otra persona tiene abierto en una red no tienes control sobre él, tan solo podrías entrar en la red como administrador y acceder a la máquina donde se encuentra abierto para cerrarlo de forma remota. No es posible cerrar un archivo con macros que otro usuario tiene abierto en otra máquina desde la tuya.
Lo siento
>Un saludo
>Julio
Yo no he dicho en ningún momento que esté en Red, y si lo he hecho es un error. Tanto la macro com si el archivo está abierto o no estarán en la misma máquina y bajo el mismo usuario.
Todas las pruebas que he hecho teniendo abierto el archivo que Word que queremos utilizar Excel se ha bloqueado, y debajo de las ventanas aparece lo que te he dicho que el archivo está en uso y las decisiones que puedes tomar Esperar... Yo pensaba que el usuario no iva a conocer si el archivo estaba abierto porque se encontraba en otra ubicación, pero si el archivo lo abres tú ya sabes si está abierto, si necesitas utilizarlo para que se actualice pues cierraló antes...
Ya sé que no te va a gustar y la puntuación será lamentable, pero es que algunas veces solicitáis unas cosas que no tienen sentido, toda esta consulta y romperse la cabeza por un click en la cruz de cierre de Word... pufffffffff.
>Un saludo
>Julio
Pensaba que esta página estaba ayudar a resolver dudas y problemas a la hora de crear Macros en Excel pero por lo visto además también depende de si le parece interesante al "Experto".
Quiero desde mi ignorancia en macros de excel, pedirte las mayores de las disculpas si crees que te he hecho perder el tiempo. Pero realmente la sensación que me da es que no tienes ni idea de cómo resolver mi duda y en vez de reconocerlo es más fácil cuestionar la utilidad de la macro.
Pues aunque no veas la utilidad y para ti sea un simple apretar una POR tiene su porqué pero no merece que perdamos ni tú ni yo el tiempo en esta cuestión.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas