VBA で RmDir でフォルダが削除できない「ほかの人またはプログラムによって使用されています」「パス名が無効です」

「ほかの人またはプログラムによって使用されています」とか
「パス名が無効です」などとエラーが表示され、
削除することができ無い時の対処法です。
結構泣かされました(´;ω;`)ブワッ


原因① Dir関数がファイルへのアクセスを保持している場合

いくつかtxtファイルが抽出された場合、
なんらかのハンドルがつかまれてしまうようで
参照しなかったファイルにロックがかかってしまいます。
これを防ぐには
ループを抜けたあとに
Dir (vbNullString)
を呼び出してやることで解放が行えるようです。

TakyuLog/Dir関数での解放
ようするにこういうこと
Dir (vbNullString) ' RmDir を呼び出す前にこいつを実施 
RmDir DirectoryPath



原因② Excelがカレントディレクトリを指定して保持している場合

Excel のカレントディレクトリで指定されているファイルは、
削除できないため...
ChDir ThisWorkbook.Path

『フォルダが削除できない』(あん) /Excelの学校

Excel のカレントディレクトリとは、
「名前をつけて保存」するときに最初に中身が表示されるフォルダのことです。

この場合の対処は、ようするにこういうこと
ChDir ThisWorkbook.Path ' RmDir を呼び出す前にこいつを実施 
RmDir DirectoryPath



確認 何が対象のファイルを開いているかを確認する方法

オープンしているファイルを調査する
@IT:Windows TIPS -- Tips:オープンしているファイルを調査する