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

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


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

いくつか txt ファイルが抽出された場合、
なんらかのハンドルがつかまれてしまうようで
参照しなかったファイルにロックがかかってしまいます。

これを防ぐにはループを抜けたあとに
Dir (vbNullString)
を呼び出してやることで解放が行えるようです。

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



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

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

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

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

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



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

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