Excel VBAを使ってブック(ファイル)を削除する方法について説明します。ファイルシステムオブジェクト(FSO)を使用してブックを削除します。
ブックを削除
ブックを削除する
注意点
重要なファイルを削除する前に、必要に応じてバックアップを取っておくことをお勧めします。削除してしまうと通常の方法では復活できません。
Sub DeleteWorkbook()
Dim folderPath As String
Dim filePath As String
Dim fso As Object
' 削除するファイルのフォルダとファイル名を指定
folderPath = "C:\Users\YourUsername\Documents\MyNewFolder\"
filePath = folderPath & "NewWorkbook.xlsx"
' ファイルシステムオブジェクトを作成
Set fso = CreateObject("Scripting.FileSystemObject")
' ファイルが存在するか確認して、存在する場合は削除
If fso.FileExists(filePath) Then
fso.DeleteFile filePath
MsgBox "ファイルが削除されました: " & filePath
Else
MsgBox "ファイルが存在しません: " & filePath
End If
' オブジェクトの解放
Set fso = Nothing
End Sub
「Set fso = CreateObject(“Scripting.FileSystemObject”)」はファイルシステムオブジェクト(FSO)を作成します。「If fso.FileExists(filePath) Then fso.DeleteFile filePath」は指定したファイルが存在する場合、そのファイルを削除します。
削除前の予防策
fso.DeleteFileメソッドを使用して削除したファイルは、通常の方法では元に戻すことができません。これは、fso.DeleteFileメソッドがファイルを完全に削除し、ゴミ箱に移動しないためです。
削除されたファイルを復元するためには、事前にバックアップを取るか、ファイル削除を取り消すことができるシステムやソフトウェアを使用する必要があります。
削除前に確認メッセージを表示する
ユーザーに削除の確認を求めるメッセージを表示することで、誤ってファイルを削除するのを防ぎます。
Sub DeleteWorkbookWithConfirmation()
Dim folderPath As String
Dim filePath As String
Dim fso As Object
Dim response As VbMsgBoxResult
' 削除するファイルのフォルダとファイル名を指定
folderPath = "C:\Users\YourUsername\Documents\MyNewFolder\"
filePath = folderPath & "NewWorkbook.xlsx"
' ファイルシステムオブジェクトを作成
Set fso = CreateObject("Scripting.FileSystemObject")
' ファイルが存在するか確認
If fso.FileExists(filePath) Then
' 削除確認のメッセージを表示
response = MsgBox("本当にこのファイルを削除しますか?" & vbCrLf & filePath, vbYesNo + vbExclamation, "ファイル削除の確認")
If response = vbYes Then
fso.DeleteFile filePath
MsgBox "ファイルが削除されました: " & filePath
Else
MsgBox "ファイル削除がキャンセルされました。"
End If
Else
MsgBox "ファイルが存在しません: " & filePath
End If
' オブジェクトの解放
Set fso = Nothing
End Sub
ファイルを移動してから削除する
直接削除するのではなく、まずファイルをバックアップフォルダに移動してから、必要に応じて削除する方法です。
Sub BackupAndDeleteWorkbook()
Dim folderPath As String
Dim backupFolderPath As String
Dim filePath As String
Dim backupFilePath As String
Dim fso As Object
' 削除するファイルのフォルダとファイル名を指定
folderPath = "C:\Users\YourUsername\Documents\MyNewFolder\"
filePath = folderPath & "NewWorkbook.xlsx"
backupFolderPath = "C:\Users\YourUsername\Documents\BackupFolder\"
backupFilePath = backupFolderPath & "NewWorkbook.xlsx"
' ファイルシステムオブジェクトを作成
Set fso = CreateObject("Scripting.FileSystemObject")
' バックアップフォルダが存在しない場合は作成
If Not fso.FolderExists(backupFolderPath) Then
fso.CreateFolder backupFolderPath
End If
' ファイルが存在するか確認
If fso.FileExists(filePath) Then
' ファイルをバックアップフォルダに移動
fso.MoveFile Source:=filePath, Destination:=backupFilePath
MsgBox "ファイルがバックアップフォルダに移動されました: " & backupFilePath
' バックアップ後に削除する(必要に応じてコメントアウト)
' fso.DeleteFile backupFilePath
' MsgBox "ファイルが削除されました: " & backupFilePath
Else
MsgBox "ファイルが存在しません: " & filePath
End If
' オブジェクトの解放
Set fso = Nothing
End Sub
削除操作の前にユーザーに確認メッセージを表示するこうあバックアップを取ってから削除する事で、誤ってファイルを削除するリスクを減らします。