VBでファイル存在チェックをするときは、とりあえず、DIR関数が使えますが、DIR関数は本来ディレクトリ内のリストを求めるものです。
また、DIR関数を複数入れ子で使うと謎の動きをします。たぶん、ひとつのポインターを複数のDIR関数が共有するものと推測します。
ですので、ファイル存在チェックは、APIのPathFileExists()を使いましょう!
VBでのAPIのPathFileExists()サンプル
Declare Function PathFileExists Lib "shlwapi" Alias "PathFileExistsA" (ByVal lpszPath As String) As Long
If PathFileExists("TEST.TXT") = 0 Then
'MsgBox "TEST.TXTファイルが存在しません。
End If
Pathで指定したファイルが実際に存在する場合、真(0以外)が返される。存在しない場合、偽(0)が返される。