#113 | エクスプローラ風のファイル削除 | VBA、API | |
AccessのVBAには、ファイルを削除する手段として「Killステートメント」が用意されています。しかし、WindowsAPIを使うと、エクスプローラと同じようにしてファイルの削除を行うことができます。 それには、エクスプローラ風のファイルのコピーや移動と同様に、"SHELL32.DLL"にあるWindowsAPIの「SHFileOperation」関数を使用します。 まず標準モジュールに次のコードを記述します。"Type"と"Declare"の部分はファイルのコピーや移動の場合と同じです。 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 Declare Function SHFileOperation Lib "SHELL32.DLL" Alias _ "SHFileOperationA" (lpFileOp As SHFILEOPSTRUCT) As Long Const FO_DELETE = &H3 Const FOF_ALLOWUNDO = &H40 次の例では、ファイル"c:\My Documents\Test.mdb"を削除します。 Dim stShellOp As SHFILEOPSTRUCT
Const cstrSrcFile As String = "c:\My Documents\Test.mdb" With stShellOp 'Accessのハンドルをセット .hWnd = Application.hWndAccessApp '削除モードを指定 .wFunc = FO_DELETE '削除ファイルのフルパスをセット .pFrom = cstrSrcFile '.fFlags = FOF_ALLOWUNDO End With '削除を実行 If SHFileOperation(stShellOp) = 0 Then Beep MsgBox "削除が完了またはキャンセルされました!" Else Beep MsgBox "削除に失敗しました!" End If
|
|||
|
Copyright © T'sWare All rights reserved |