Allora in testa al programma devi mettere (dove metti le variabili globali al form)
Poi usi questa funzione per eseguire il file:codice:Private Declare Function WaitForSingleObject Lib "KERNEL32" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long Private Declare Function OpenProcess Lib "KERNEL32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long Private Declare Function CloseHandle Lib "KERNEL32" (ByVal hObject As Long) As Long
Quindi al posto di shell usi questa sub e non devi temporizzare niente.codice:Public Sub ShellWait(ByVal FileName As String, Optional WindowStyle As Variant) Dim idProc As Long Dim hProc As Long idProc = VBA.Shell(FileName, WindowStyle) hProc = OpenProcess(&H1F0FFF, False, idProc) 'attendi fine programma If hProc <> 0 Then Call WaitForSingleObject(hProc, INFINITE) Call CloseHandle(hProc) End If End Sub

Rispondi quotando