¿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?

Respuesta

Si pones True despues del sendkeys:

"Sendkeys XXXXX, True"

Hasta que no se haya ejecutado el sendkeys no pasa a la siguiente instrucción

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas