使用VBA代码,如何删除文件或文件夹到回收站?
RmDir语句、Kill语句和FileSystemObject中的语句会完全删除文件或文件夹,没有回旋的余地。
答:有点复杂,因为需要WindowsAPI的帮助。以下是代码:
' API语句。
声明函数SHFileOperation Lib " shell32.dll "别名" shfile operationa "(lpFileOp As shfileop struct)为Long
SHFILEOPSTRUCT类型
一样长
一样长
从字符串形式
作为字符串的pTo
整数形式的模糊标签
fAnyOperationsAborted中止为布尔值
尽可能长
作为字符串
结束类型
子回收文件()
Dim文件操作为SHFILEOPSTRUCT
昏暗的灯转得一样长
将文件名改为字符串
“dim SF文件夹为字符串”声明表示要删除的文件夹字符串。
s filename=application . getopen filename(filefilter :=" excel工作簿,*。xls *。xls* ",Title:=="选择要删除的文件")。
' Constfo _ delete=H3 '删除pFrom指定的文件或目录。
ConstFOF_ALLOWUNDO=h40 '可恢复(没有FOF_ALLOWUNDO不会放入回收站)。
Constfof _ noconfirmation=h10 '将对话框直接放入回收站,不显示它。
使用文件操作。wFunc=FO_DELETE。pFrom=sFileName。fflags=fof _ allowdofof _ no confirmation '将其直接删除到回收站,而不显示对话框。fflags=fof _ allowndo '显示一个对话框,供用户决定是否删除到回收站。fflags=fof _ no confirmation '删除而不显示对话框。
以…结尾
lReturn=SHFileOperation(文件操作)
末端接头
要删除文件夹,可以将变量sFolder设置为要删除的文件夹的路径,然后将其分配给pFrom。
上述代码运行后,将显示如下所示的对话框,提示您选择要删除的文件。
选择文件后,点击“打开”按钮,弹出如下图所示的对话框。单击“是”将所选文件删除到回收站。
在计划中,我们使用以下语句来实现目标:fflags=fof _ allowndo '显示一个对话框,供用户决定是否删除到回收站。
如果要删除文件并将其放入回收站而不显示提示对话框,请改用以下语句:fflags=fof _ allowndo fof _ noconfirm '直接删除到回收站,不显示对话框。
如果您不想显示提示对话框并将其完全删除而不将其放入回收站,请改用以下语句:fflags=fof _ noconfirmation '删除而不显示对话框。
这似乎有点复杂。如果想深入学习,可以参考关于Windows API介绍的相关资料。如果您只想在必要时使用这些代码,只需将上述代码复制到您自己的代码模块中,并进行一些小的调整。