Top /
TIPS / Dir関数でファイルの存在チェックを行うときの注意
ファイルの存在チェックはどうしてますか?
よくこういうコーディングを見かけます。
Private Sub Command1_Click()
If Dir("C:\HOGE\HOGE.txt") <> "" Then
MsgBox "ファイルがあります!"
Else
MsgBox "ファイルがありません!", vbExclamation
End If
End Sub
実はこれ、あまりいい方法ではないのです。
ファイルが無い場合は問題ありません。
が、ファイルが存在していると、ディレクトリを読み取りでオープンしたままになります。
どういうことかというと、上の例では、C:\HOGE が削除できなくなるのです。
回避するためには、次のように Dir 関数が空文字を返すまでループしてやる必要があります。
Private Sub Command1_Click()
If Dir("C:\HOGE\HOGE.txt") <> "" Then
Do Until Dir() = ""
Loop
MsgBox "ファイルがあります!"
Else
MsgBox "ファイルがありません!", vbExclamation
End If
End Sub