¿Alguna alternativa a la función sleep y sendkeys?
Tengo una duda para el código que estoy haciendo en VBA. Lo primero necesito que me abra unos programas (esto lo se hacer)de donde sacare unos datos, el código es el siguiente:
Sub Programa 1() Dim AV As String Dim Ide As Double On Error Resume Next AV = "ruta del programa" Ide = Shell(AV, vbNormalFocus) If Err <> 0 Then MsgBox "No se puede iniciar " & AV, vbCritical, " Error" End If End Sub Sub Programa 2() Dim ST As String Dim Ide As Double On Error Resume Next ST = "ruta del programa" Ide = Shell(ST, vbNormalFocus) If Err <> 0 Then MsgBox "No se puede iniciar " & ST, vbCritical, " Error" End If End Sub
El problema viene en que el ordenador es muy lento, entonces el tiempo de ejecución del primer programa es un tiempo aleatorio, usar la función Sleep me lleva a determinar el tiempo y no me sirve porque a veces se solapan los programas y abren a la vez o espero una eternidad entre uno y otro (depende del día y la agilidad que quiera el ordenador xD) Entonces necesito una función que sepa cuando finalizo de ejecutarse el primero para continuar ejecutándose el código.
Y esto me lleva a la segunda pregunta el primer programa de donde saco datos necesito ir al menú del programa Acción - Imprimir - seleccionar PDFCreator - botón Imprimir. Todo para exportar una información a pdf, por la que estoy usando el SendKeys alt+a etc... Y aquí viene el mismo problema que arriba a veces el Sleep se me queda corto de tiempo y o no se ejecuta el código o se me queda largo y entre acciones espero un montón.
Alguna alternativa para no tener que especificar tiempos de espera y que lo vaya haciendo el según necesite o una alternativa al sendkey para que no necesite el Sleep entre acciones?