Удалить каталог и его содержимое (файлы, подкаталоги) без использования FileSystemObject

4 Eldar Agalarov [2014-08-20 12:55:00]

Я хочу знать, можно ли переписать этот фрагмент кода:

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?

vba excel-vba filesystemobject


1 ответ


6 Решение PaulFrancis [2014-08-20 13:47:00]

Этот фрагмент кода использует 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

Надеюсь, что это поможет.