我想知道是否可以重写这段代码:

Private Sub PrepareDir(ByVal dir As String)
    Dim fso As New FileSystemObject
    If fso.FolderExists(dir) Then Call fso.DeleteFolder(dir, True)
    Call fso.CreateFolder(dir)
End Sub

使用VBA语句:Kill,MkDir等。此过程中最“难”的部分-删除非空目录。使用FSO可以轻松完成,但是没有FSO怎么办呢?

最佳答案

这段ccode使用RmDir删除文件夹。 AFAIK,RmDir不能删除文件夹,除非它为空,所以我们首先清除文件夹中的内容,然后删除目录。

Private Sub PrepareDirModified(dirStr As String)
On Error Resume Next
    If Right(dirStr, 1) <> "\" Then dirStr = dirStr & "\"
    Kill dirStr & "*.*"
    RmDir dirStr
    MkDir dirStr
On Error GoTo 0
End Sub

希望这可以帮助。

关于excel - 无需使用FileSystemObject即可删除目录及其内容(文件,子目录),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25401789/

10-10 21:43