web-dev-qa-db-ja.com

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

VBAステートメントの場合:Kill、MkDirなど。これの最も「難しい」部分-空でないディレクトリを削除します。 FSOを使用すると簡単に実行できますが、FSOを使用せずに実行するにはどうすればよいでしょうか。

6
Eldar Agalarov

この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

お役に立てれば。

8
PaulFrancis

OPは、「 [〜#〜] fso [〜#〜] "なしでコードを書き直したいが、意味がありません。

目標がコードの量を減らすことである場合は、単にそれをワンライナーにします。

CreateObject("Scripting.FileSystemObject").DeleteFolder "x:\myFolder"

要求に応じて、これは永久にフォルダを削除し、その内容を削除します。


詳しくは:

6
ashleedawg