Hai la medesima cosa nel CODICE che hai incollato al 1° 3D... quindi deduco tu non lo abbia compreso... ma copia/incollato...!
Dim bLoopExpired As Boolean
Dim sStartTime As Single
sStartTime=Timer()
Debug.Print Format(sStartTime,"hh:mm:ss")
Do Until IsFileOpen(fileName)=False
If Timer()-sStartTime>100 then
Debug.Print Format(Timer(),"hh:mm:ss")
bLoopExpired =true
Exit Do
End If
DoEvents
Loop
If Not bLoopExpired then
Kill "....."
End if
Questo codice in linea teorica si ALLUPPA finchè la funzione IsFileOpen(...) non restituisce FALSE, che significa che il File è LIBERO.
Ti avevo suggerito però di inserire un TIMEOUT, quindi Leggi il Timer prima di iniziare il LOOP e, lo interrompi oltre che per IsFileOpen(fileName) = False, anche per superamento del Tempo Limite, ottenuto per differenza dal TempoINiziale ed il tempo Attuale...
La seconda condizione la metti all'interno del LOOP e forzi un Flag nel caso intervenga in modo da sapere che sei uscito per TIMEOUT.
Non ho testato il codice, ma scritto a braccio... verificalo e adatta il Tempo di TimeOut che ho messo a 100 ma sicuramente è troppo, ti ho messo i DEBUG.PRINT dei 2 Valori Orari per capire di cosa parliamo...