【会員アンケートご協力のお願い】抽選で計5名様に役立つ書籍をプレゼント!
即効テクニック |
ファイルを削除するには、いくつかの方法があります。 たとえばVBAの標準機能であるKillステートメントは、指定したファイルを削除します。 次のコードはC:\Sample.txtを削除します。Sub Sample1() Kill "C:\Sample.txt" End Subまた、FileSystemObjectを使ってファイルを削除することもできます。 FileSystemObjectのDeleteFileメソッドは、引数に指定したファイルを削除します。Sub Sample2() With CreateObject("Scripting.FileSystemObject") .DeleteFile "C:\Sample.txt" End With End Subどちらの方法も、削除したファイルはごみ箱には移動せず完全に削除されます。 これはこれで便利なこともありますが、ときには、後で元に戻せるようにWindowsのごみ箱へ移動したいケースもあるでしょう。 ファイル(またはフォルダ)をごみ箱へ移動するには、SHFileOperationというWindows APIを使います。 SHFileOperationは、Windowsが標準で行うコピーや移動などのファイル操作を呼び出すAPIです。 「ファイルを移動しています」などのメッセージと共に、ファイルが移動しているアニメーションを表示するにも、このSHFileOperationを使います。 ファイルをごみ箱に移動するには、次のようにします。 次のコードはダイアログボックスで選択したファイルをごみ箱に移動します。''ごみ箱に送るためのAPI Private Declare Function SHFileOperation Lib "shell32.dll" _ (lpFileOp As SHFILEOPSTRUCT) As Long ''SHFileOperation関数に渡すユーザー定義型 Private Type SHFILEOPSTRUCT hwnd As Long ''ウィンドウハンドル wFunc As Long ''実行する操作 pFrom As String ''対象ファイル名 pTo As String ''目的ファイル名 fFlags As Integer ''フラグ fAnyOperationsAborted As Long ''結果 hNameMappings As Long ''ファイル名マッピングオブジェクト lpszProgressTitle As String ''ダイアログのタイトル End Type ''定数 Private Const FO_DELETE = &H3 ''削除する Private Const FOF_ALLOWUNDO = &H40 ''ごみ箱に送る Sub Sample3() Dim SH As SHFILEOPSTRUCT, re As Long, Target As String Target = Application.GetOpenFilename _ (Title:="削除するファイルを選択してください") If Target = "False" Then Exit Sub With SH .hwnd = Application.hwnd .wFunc = FO_DELETE .pFrom = Target .fFlags = FOF_ALLOWUNDO End With re = SHFileOperation(SH) If re <> 0 Then MsgBox "削除に失敗しました", vbExclamation End Sub削除するファイルは、GetOpenFilenameメソッドで選択してもらっています。 ボタンが[開く]ですが、そこは許してもらいましょう。 選択した削除対象のファイルを、APIで定められたユーザー定義型(構造体)にセットして、APIを呼び出します。 画面には、お馴染みの「ファイルがごみ箱に飛んでいく」アニメーションが表示されます。 削除が完了するとAPIは0を返します。 返り値が0でなかったときは、何らかの理由で削除に失敗したことを表します。