Macro para esperar a que un programa deje de ejecutarse

 


He adaptado esta macro para cerrar procesos usando VBA, para que una macro espere a que un proceso termine. 

https://excelsignum.com/2017/04/09/cerrar-un-programa-desde-excel-con-vba/


En el ejemplo, he puesto el word, pero se podría usar para cualquier programa.


Sub Espera_Cerrar_Programa()
'Declaramos variables
Dim cObj As Object
Dim Programa As Object
Dim Proceso As Object
Inicio:
'Rellenar ProgramaEjecutado
NombrePrograma = winword.exe
ProgramaEjecutado = 0
'Realizamos una consulta SQL para verificar si el programa está activo, en proceso.
Set cObj = GetObject("winmgmts://.")
Set Proceso = cObj.ExecQuery("SELECT * FROM " & "Win32_Process WHERE Name = '" & NombrePrograma & "'")
'Con un For recorremos la consulta para ver si el programa esta ejecutado
For Each Programa In Proceso
On Error Resume Next
    Application.Wait (Now + TimeValue("00:00:02"))
    ProgramaEjecutado = 1
On Error GoTo 0
Next
'Liberamos variables
Set Proceso = Nothing
Set cObj = Nothing
'Volver a ejecutar si ProgramaEjecutado = 1
If ProgramaEjecutado = 1 Then GoTo Inicio:
End Sub

Comentarios

Entradas populares de este blog

Convertir un número en letra en español en Excel

Renombrar Archivos o Carpetas