OfficeType

VBA~フォルダを消去しよう~Excel

フォルダを消去したい時はFileSystemObjectオブジェクトのDeleteFolderメソッドを使います。

基本

下のコードを実行するとCドライブのサンプルというフォルダが消去されます。

Sub test1()
Dim objFSO As Object
Set objFSO = CreateObject("Scripting.FileSystemObject")

objFSO.DeleteFolder "C:\サンプル"
End Sub

エラー回避(指定したフォルダがない場合)

指定したフォルダがない場合はエラーが表示されます。

image-01

メッセージを表示するようにするとエラーが回避できます。下のコードはIf文の条件式にDir関数を使っています。Dir関数はDir(パス,属性)で属性に確認したいファイルの属性に対応した定数を指定します。フォルダの場合はvbDirectoryを指定します。パスに確認したいフォルダのパスを指定しフォルダがあれば、フォルダ名を返し、なければ長さ0の文字列""を返します。今回の場合はフォルダがない場合にメッセージを表示するので条件式はDir(FolderPath,vbDirectory) = ""になり、これを満たした場合にメッセージが表示されExit Subででコードが終了します。。フォルダがある場合はエラー回避は必要ないのでIfとEnd Ifの間に書かれたコードは実行しないのでExit Subは実行せずに最後に書かれているobjFSO.DeleteFolder FolderPathを実行しフォルダを消去します。

Sub test2()
Dim objFSO As Object
Set objFSO = CreateObject("Scripting.FileSystemObject")
Dim FolderPath As String
FolderPath = "C:\サンプル"
If Dir(FolderPath, vbDirectory) = "" Then
MsgBox "フォルダが存在しません"
Exit Sub
End If
objFSO.DeleteFolder FolderPath
End Sub

image-02