ExcelVBAで全ファイル削除

はじめに

マクロを作る際、前回処理したときのゴミ(ダウンロードしたファイルや出力したファイル等)を自動で削除するクリーニング処理を実装したいなぁ、と思うときがあるかと思います。

また、マクロを実行した後に「このディレクトリ内にゴミを残しておきたくないから、処理の最後にクリーニング処理を入れておきたいけど、どう実装したらいいんだ?」と思う事があるのは私だけでしょうか??

マクロを初回実行し、出力されたファイルを手動で全て削除した後、また起動。。。なんて事をやっていたらいつまで経っても完全自動化はできませんよね。

マクロで処理(グラフ画像出力やデータ加工後のCSV出力等)するのはできたけれども、後片付けは手動で行うなんて正直ちょっと格好悪いです(笑)。

マクロを起動した時に自動であるディレクトリ内にあるファイル群を削除してくれたらすごく楽ですしスマートな作りになると思いましたので、ちょっとご紹介します(あまり大した処理じゃなくてすみません、笑)。

指定したディレクトリ内のファイル全てを削除するプロシージャ

今まで自分で作ってきたマクロには殆どこの処理を実装させているのですが、ディレクトリ内を空にするプロシージャはなにかと便利です。

Sub DeleteFiles(str_dir_path)
  '***********************************************************
  '前回処理時のゴミを削除
  '***********************************************************
  '引数で指定されたdirectory内にあるファイルを全て削除
  If Dir(str_dir_path, vbDirectory) <> "" Then
    Dim del_files As String
    del_files = Dir(str_dir_path &amp; "\" &amp; "*")

    Do While del_files <> ""
      '「Thumbs.db」は削除せずcontinue
      If del_files <> "Thumbs.db" Then
        Kill str_dir_path &amp; "\" &amp; del_files
      End If
      del_files = Dir()
    Loop
  End If
End Sub

例えば、マクロを起動したときに「このディレクトリ内はいつも空の状態にしておきたいな」と思ったら、Auto_Openプロシージャ内にこのプロシージャを呼び出す処理を指定してあげれば、毎回マクロを起動した時に自動でファイル削除処理が実行されます。

また、上記のサンプルプログラムでは「*」で全てのファイルにマッチするよう実装していますが、拡張子を指定してあげることで削除するファイルの種類を限定させることも可能です。

こういった細かい仕様に関しては案件ごとに変わってくるかと思いますので、適宜変更してみてください。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です