2

我的桌面上有几个文件夹,我暂时用于宏。现在,我想删除它们。一个是 .zip,一个是普通文件夹。

Set fso = CreateObject("scripting.filesystemobject")
fso.DeleteFolder unzipPath, True

上面的代码可以正常工作。非 .zip 文件夹被删除,没有问题。但是,这不会删除文件:

On Error GoTo 0
fso.DeleteFolder zipPath, True

MSDN 文档相反,这也不会产生错误。经过太多时间,我意识到我只需要使用DeleteFile.zip,因为显然 .zip 在技术上是一个文件,而不是一个文件夹。然后这两个项目都被成功删除。

它现在可以工作了,但是我仍然对为什么 usingDeleteFolder没有产生错误感到有些困惑。上述文件指定

如果找不到匹配的文件夹,则会发生错误。

更新:为了测试,我专门创建了一个独立的子来测试DeleteFolder.zip。.zip 不变;没有返回错误;潜艇刚刚结束。

只是一个在 VBA 领域游荡的好奇灵魂......

4

1 回答 1

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
于 2015-07-22T20:54:26.120 回答