昨天看到网友提问,说VBA中的Kill语句,会直接删除文件。想得到一个可删除至回收站的办法。办法是有,但这是需要API调用的。在标准模块中写下以下代码:
'声明
Option Compare Database
Option Explicit
Public 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 Long
End Type
Public Declare Function SHFileOperation Lib "shell32.dll" Alias "SHFileOperationA" (lpFileOp As SHFILEOPSTRUCT) As Long
Public Const FO_Delete = &H3
Public Const FOF_ALLOWUNDO = &H40
Public Const HWND_DESKTOP = 0
Public Const NOCONFIRMATION = &H10 '不提示
'函数定义
Function DeleteFiles(Path As String) '定义删除文件函数
Dim Shop As SHFILEOPSTRUCT
With Shop
.hwnd = HWND_DESKTOP
.pTo = ""
.wFunc = FO_Delete
.pFrom = Path + Chr(0)
.fFlags = FOF_ALLOWUNDO + NOCONFIRMATION
End With
SHFileOperation Shop
End Function
'以上是定义内容,之后可以在任意过程中调用,示例如下:
Public Sub aaaa() '调用
DeleteFiles "E:\工作资料\3年经济指标.doc"
End Sub
若要将文件直接删除,即删除的干干净净(不可恢复),请参考下面示例.
相关文章:
程序自杀演示