はじめに
マクロを作る際、前回処理したときのゴミ(ダウンロードしたファイルや出力したファイル等)を自動で削除するクリーニング処理を実装したいなぁ、と思うときがあるかと思います。
マクロを実行して出力されたファイル群を全て手動で削除し、またマクロ実行。。。なんて事をやっていたらいつまで経っても完全自動化はできません。
マクロで処理(グラフ画像出力やデータ加工後の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 & "\" & "*")
Do While del_files <> ""
'「Thumbs.db」は削除せずcontinue
If del_files <> "Thumbs.db" Then
Kill str_dir_path & "\" & del_files
End If
del_files = Dir()
Loop
End If
End Sub
例えば、マクロを起動したときに「このディレクトリ内はいつも空の状態にしておきたいな」と思ったら、Auto_Openプロシージャ内にこのプロシージャを呼び出す処理を指定してあげれば、毎回マクロを起動した時に自動でファイル削除処理が実行されます。
また、上記のサンプルプログラムでは「*」で全てのファイルにマッチするよう実装していますが、拡張子を指定してあげることで削除するファイルの種類を限定させることも可能です。
こういった細かい仕様に関しては案件ごとに変わってくるかと思いますので、適宜変更して頂ければと思います。
コメント