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



トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   最終更新のRSS
Last-modified: 2010-11-21 (日) 03:16:25 (2581d)