Problemas al crear carpetas con vba access

Quiero crear carpetas con el siguiente código, pero me salta el error 76, no se ha encontrado la ruta de acceso. Agradecería que alguien me pudiese decir donde está el error.

Dim Path As String, NombreCarpeta As String
    Path = CurrentProject.Path
    Max = "\" & [Apellidos] & ", " & [Nombre]
    If Nz(Max, "") = "" Then
    Exit Sub
    End If
    NombreCarpeta = "\" & c_escolarproximo & Max
    'Verificamos si la carpeta existe ya...
     If Dir(Path, vbDirectory) <> "" Then
     'Comprueba que la carpeta no existe para crearla.
       If Dir(Path & NombreCarpeta, vbDirectory) = "" Then MkDir Path & NombreCarpeta
     'MkDir se emplea para crear un directorio/carpeta.
     'Si no se especifica la unidad de disco, el directorio/carpeta se crea en la unidad actual.
     End If
    Shell "explorer " & Path & NombreCarpeta, vbNormalFocus

"c_escolarproximo" es una función que me devuelve el curso escolar próximo

1 Respuesta

Respuesta
1

No puede crear una subcarpeta sin crear primero la carpeta dependiente, debe hacerlo uno por uno o utilizar una función para crear carpetas y subcarpetas. Esta función le permite crear varias carpetas.

Public Function CrearCarpetas()
' Procedimiento para crear varias carpetas ya que
' MkDir solo permite crear de  a una carpeta
Dim i As Integer
Dim Array_Dir As Variant
Dim Sub_Dir As String
Dim El_Path As String
El_Path = InputBox("Escriba la ruta del directorio a crear" & _
 "con los subdirectorios", " Crear varios niveles de directorios")
If El_Path = vbNullString Then Exit Function
 'Desglosa el path
 Array_Dir = Split(El_Path, "\")
 El_Path = vbNullString
 'Recorre el array anterior para ir creando uno por uno
 For i = LBound(Array_Dir) To UBound(Array_Dir)
    Sub_Dir = Array_Dir(i)
    If Len(Sub_Dir) > 0 Then
      El_Path = El_Path & Sub_Dir & "\"
       If Right$(Sub_Dir, 1) <> ":" Then
         ' Verificamos que no exista
        If Dir$(El_Path, vbDirectory) = vbNullString Then
         'Crea la carpeta
         Call MkDir(El_Path)
       End If
      End If
    End If
 Next i
End Function

Por ejemplo;

Crea en la partición D: la carpeta principal "carpeta_00" y en esta la carpeta "carpeta_01" y en esta última la carpeta "carpeta_03"

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas