not - Equivalente a Directory.CreateDirectory() en VB6
visual basic create directory if doesn t exist (3)
Intentando crear varias capas de carpetas a la vez C: / pie / applepie / recipies / sin usar varios comandos diferentes, ¿hay alguna manera sencilla similar a Directory.CreateDirectory ()?
Aquí hay un código que utilicé en uno de mis proyectos. Requiere que se agregue una referencia al proyecto para el objeto del sistema de archivos.
Primero, haga clic en Proyecto -> Referencias, baje hasta "Microsoft Scripting Runtime" y selecciónelo. Entonces puedes usar esta función:
Public Sub MakePath(ByVal Folder As String)
Dim arTemp() As String
Dim i As Long
Dim FSO As Scripting.FileSystemObject
Dim cFolder As String
Set FSO = New Scripting.FileSystemObject
arTemp = Split(Folder, "/")
For i = LBound(arTemp) To UBound(arTemp)
cFolder = cFolder & arTemp(i) & "/"
If Not FSO.FolderExists(cFolder) Then
Call FSO.CreateFolder(cFolder)
End If
Next
End Sub
Como alternativa, aquí hay una función que escribí que toma una ruta completa que incluye una letra de unidad si es necesario como parámetro. A continuación, recorre el camino y atrapa el error de VB número 76 (ruta no encontrada). Cuando el controlador de errores atrapa un error 76, crea la carpeta que causó el error y reanuda la ruta.
Public Function Check_Path(rsPath As String) As Boolean Dim dPath As String Dim i As Integer Dim sProductName As String On Error GoTo Check_Path_Error If Left$(UCase$(rsPath), 2) Left$(UCase$(CurDir), 2) Then ChDrive Left$(rsPath, 2) End If i = 3 Do While InStr(i + 1, rsPath, "/") > 0 dPath = Left$(rsPath, InStr(i + 1, rsPath, "/") - 1) i = InStr(i + 1, rsPath, "/") ChDir dPath Loop dPath = rsPath ChDir dPath Check_Path = True Exit Function Check_Path_Error: If Err.Number = 76 Then ''path not found'' MkDir dPath ''create the folder'' Resume Else sProductName = IIf(Len(App.ProductName) = 0, App.EXEName, App.ProductName) MsgBox "There was an unexpected error while verifying/creating directories." _ & vbCrLf & vbCrLf & "Error: " & CStr(Err.Number) & ", " & Err.Description & ".", _ vbOKOnly + vbCritical, sProductName & " - Error Creating File" Check_Path = False End If End Function
''Sin la necesidad de hacer referencia a FileSystemObject
Public Sub MkPath(ByVal sPath As String)
Dim Splits() As String, CurFolder As String
Dim i As Long
Splits = Split(sPath, "/")
For i = LBound(Splits) To UBound(Splits)
CurFolder = CurFolder & Splits(i) & "/"
If Dir(CurFolder, vbDirectory) = "" Then MkDir CurFolder
Next i
End Sub