i have a file saved from an external program, i have to open and read, i need to know when the writing of that file is completed

previously i have been using a simple loop
Code:
Do While FileLen(myfile) = 0
    DoEvents
    l = l + 1
    If l > 10000 Then MsgBox inv & " timed out": Exit Sub
Loop
this has been working for several years, but on a new, faster machine, the code continues before the file saving has completed, i can obviously extend the loop or use a sleep, but i would like some way to actually test, when the code should continue