Perhaps something like:
Function WaitForFile(filePathAndName As String, timeOutSeconds As Long) As Boolean Dim Begin As Long Begin = Timer On Error Resume Next Workbooks.Open filePathAndName WaitForFile = ((CLng(Timer) - CLng(Begin)) < timeOutSeconds) And (Err = 0) On Error GoTo 0 End Function