Eld*_*rov 6 excel vba excel-vba filesystemobject
我想知道是否可以重写这段代码:
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
Run Code Online (Sandbox Code Playgroud)
使用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
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助.
OP表示他们想“不使用FSO ” 重写代码,但这没有任何意义。
如果目标是减少代码量,只需将其变成单一格式即可:
CreateObject("Scripting.FileSystemObject").DeleteFolder "x:\myFolder"
Run Code Online (Sandbox Code Playgroud)
根据要求,这将永久删除文件夹及其内容。