Crear directorios con vba en funcios de Ejercicios

Estoy dando esta instrucción para creación de Directorios en función de los ejercicios de las Fechas de Facturas:

Dim RUTA0 As String
RUTA0 = "C:\GESTIÓN Y ADMINISTRACIÓN\COMPRAS\FACTURAS\2022\TRIMESTRE 1\"

MkDir (strUserPath & [RUTA0])

Y me da este error:

La Ruta0 es variada en función de las Fechas de la Facturas

Os agradecería si me dijeseis donde puede estar el error.

1 Respuesta

Respuesta
1

Está mal la instrucción, debe ser:

MkDir (RUTA0)

Exactamente las instrucciones que estoy utilizando son estas después de hacer la corrección que me has indicado:

El Directorio de Facturas Compras es este:

C:\3.- GESTIÓN Y ADMINISTRACIÓN\2.- COMPRAS\1.- FACTURAS\

...

Estas son las instrucciones que estoy usando donde quedan insertados los PDF:

Dim VerDirectorio As String
VerDirectorio = DLookup("DirectorioFacturasCompras", "PARAMETROSEMPRESA")
Dim NumTrimestre As String
NumTrimestre = DatePart("q", Date)
FechaContable = Date

MkDir ([VerDirectorio] & Year([FechaContable]) & "\" & "TRIMESTRE " & [NumTrimestre] & "\" & NumApunte & ".PDF")

Me sigue dando el mismo error.

Trate de obtener el contenido de la cadena

[VerDirectorio] & Year([FechaContable]) & "\" & "TRIMESTRE " & [NumTrimestre] & "\" & NumApunte & ".PDF"

Por ejemplo:

Dim strTem As String

strTem=[VerDirectorio] & Year([FechaContable]) & "\" & "TRIMESTRE " & [NumTrimestre] & "\" & NumApunte & ".PDF"

Debug. Print strTem

Revise la ventana de inmediato el texto que devuelve la variable strTem. Veo que está creando 2 subdirectorios.

No puede crear una subcarpeta sin haber creado antes la carpeta principal, es decir, debe crear la subcarpeta "TRIMESTRE" con otro MkDir.

Jobe, le dejo este procedimiento para crear múltiples carpetas, trate de adaptarlo a su programa:

Private Sub btnCrear_Click()
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 Sub
 '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 Sub

Pruébelo desde un botón de comando, por ejemplo:

Esto me crea 3 carpetas en la unidad D; algo como;

Nivel_1

     Nivel_2

          Nivel_3

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas