我桌面上有几个文件夹,暂时用于宏。现在,我想删除它们。一个是.zip,一个是常规文件夹。
Set fso = CreateObject("scripting.filesystemobject")
fso.DeleteFolder unzipPath, True
以上代码可以正常运行。删除non.zip文件夹没有问题。但是,这不会删除文件:
On Error GoTo 0
fso.DeleteFolder zipPath, True
与MSDN documentation相反,这也不会产生错误。经过太多时间,我意识到我只需要使用DeleteFile
作为.zip,因为显然.zip在技术上是一个文件,而不是文件夹。然后成功删除这两个项目。
它现在有效,但我仍然有点困惑,为什么使用DeleteFolder
没有产生错误。上述文件指定
如果找不到匹配的文件夹,则会发生错误。
更新:为了进行测试,我专门创建了一个独立的sub来测试.zip上的DeleteFolder
。 .zip没有变化;没有返回错误;子刚刚结束。
只是一个好奇的灵魂徘徊在VBA的领域......
答案 0 :(得分:1)
此行为不仅限于.ZIP文件(压缩文件夹实际上是这些文件)。有趣的是,DeleteFile
方法在尝试删除现有文件夹时不会抛出错误,并且DeleteFolder
方法在尝试删除现有文件时不会出错。我遇到错误的唯一方法是指定一个不存在的文件/文件夹名称。
是的,看来MSDN出错了。试试这个:
Sub IO_Error()
Dim objFSO As FileSystemObject
Dim strTempDir As String
Set objFSO = New FileSystemObject
strTempDir = Environ("Temp")
Debug.Print strTempDir & "\IO Test"
objFSO.CreateFolder strTempDir & "\IO Test"
objFSO.CreateTextFile strTempDir & "\IO Test\IO Test.txt", True
objFSO.DeleteFolder strTempDir & "\IO Test\IO Test.txt", True 'No errors
objFSO.DeleteFile strTempDir & "\IO Test", True 'No errors
objFSO.DeleteFile strTempDir & "\IO Test\", True 'File not found error
End Sub