ファイルを削除する

Killステートメントでファイルの削除を行うコード。VBAでの削除に関しての注意点

'Wordファイルを全て削除する
Kill ThisWorkbook.Path & "\*.doc*"

ファイルの削除には「Kill」ステートメントを使用します
引数に削除対象のパスを指定します
パスにはワイルドカードが使用できます、例コードではコードのあるExcelファイルと同じフォルダ内の全てのWordファイルを削除します

Wordはバージョンによって拡張子が3文字と4文字がありますが3文字目までは同じなのでワイルドカードを使用することでバージョンの違うものも一括で削除可能です

VBAでのファイルの削除について

VBAのコードでのファイルの削除は復元が不可能な状態での削除になります
ファイルの削除に関して注意が必要です、特にワイルドカードでの削除は予期しないファイルまで削除してしまう可能性もあります

ゴミ箱に移動させる方法は、VBA標準機能には搭載されていません
WinAPIを使用することで可能ですが、少し難しくなります

なので、デスクトップなどの分かり易い場所に「不要ファイル」などの名前でフォルダを作成して、そこに移動させるようにします
その後、一定期間後にファイルを削除するように処理を組むことでWinAPIを使用せずに目的は達成できると思います

フォルダを削除する

RmDirステートメントを使用してフォルダを削除するコード。このコードの使用上の難点

'フォルダを削除する
RmDir ThisWorkbook.Path & "\新しいフォルダー"

フォルダを削除するには「RmDir」ステートメントを使用します
引数にはフォルダ名までを含むパスを指定します

存在しないフォルダパスを指定するとエラーが発生します
MkDirステートメントと同様にエラー無視による削除実行は可能ではありますが、後述のエラーも発生することから、削除できていない状態になることがあるのでエラー無視には意味がありません

上記のエラーの他に、削除対象フォルダ内にファイルが存在しているとエラーが発生し削除できません

このコードで削除を実行する場合は、フォルダ内にあるファイルを全て削除してから実行します
ただ、すべて削除してフォルダも削除する目的で無条件削除で良いのならFileSystemObjectのDeleteFolderメソッドを使用するほうが便利です
こちらであれば、フォルダ内にファイルが存在していても削除が可能です

フォルダを作成する

MkDirステートメントを使用してフォルダの作成を行うコード。エラー無視による作成コードもあります

'処理ブックと同じ場所にフォルダ作成
MkDir ThisWorkbook.Path & "\新規フォルダ"

フォルダの作成には「MkDir」ステートメントを使用します
引数はフォルダの名前までを含めたパスを指定します

例コードでは「ThisWorkbook.Path」(コードのあるブックのパス)と同じ場所に「新規フォルダ」を作成します

同名作成時のエラー処理について

このコードはすでに存在するフォルダ名を指定するとエラーが発生します

'フォルダ作成済みのエラーを無視する
On Error Resume Next
MkDir ThisWorkbook.Path & "\新規フォルダ"
On Error GoTo 0

上記のコードは、エラーを無視する処理の上で作成を実行します
この処理であれば、作成済みのフォルダ名を指定した場合はエラーが発生しますが無視して処理を継続できます

その際に、既存のフォルダが上書きされたりすることはありません

これは乱暴なコードかもしれませんが、いちいちフォルダの存在確認を行うのも面倒ですし、そもそもフォルダの存在を確認することが目的では無いので無駄な処理だと思います
とはいえ、Dir関数を使用すれば簡単に存在確認は行えます

ただ、やらなくてもいいことはやらなくて良いと思います


関連の記事