Crear carpetas con macro basado en un listado

Tengo un listado donde en la columna B se encuentra el nombre de los escenarios y en la columna C se encuentra el nombre de los diferentes Casos de Prueba que se vinculan a los diferentes escenarios, necesito crear una carpeta con el nombre del escenario y que esta contenga (subcarpetas) los mobres de casos de prueba

Ejemplo:

Deberian quedar asi las carpetas

C:\Users\Juan\Documents \Proyecto\Validaciones para Renovación de Matricula de PN \Habilite los campos para relacionar empleados para PN entre 18 y 35 años

C:\Users\Juan\Documents \Proyecto\Validaciones para Renovación de Matricula de PN \No habilite el campo para relacionar empleados para matriculas que no cumplen con la ley 1780 (menores de 18)

C:\Users\Juan\Documents \Proyecto\Validaciones para Renovación de Matricula de PJ SOCIEDAD DE CUOTAS \Habilite los campos para relacionar empleados para PJ Sociedad de Cuotas entre 18 y 35 años etc...

1 Respuesta

Respuesta
1

En macro siguiente asumo que la ruta principal se coloca en una variable. También podría ser colocada en alguna celda, en ese caso no olvidar la barra final.

Sub creaDirectorios()
'x Elsamatilde
'el fin de rango lo indica la col C
X = Range("C" & Rows.Count).End(xlUp).Row
'contempla posible error de nbre inválido o carpeta ya creada
On Error Resume Next
'se recorre la tabla de datos desde B6 hasta x
For i = 6 To X
    If Range("B" & i) <> "" Then
        'se crea la carpeta
        Ruta = "C:\Users\Juan\Documents\Proyecto\"
        celda = Range("B" & i)
        midire = Ruta & celda
        MkDir midire
    End If
    'se crean las subcarpetas
    MkDir midire & "\" & Range("C" & i)
Next i
MsgBox "Fin del proceso"
End Sub

Como puedo hacer para que en otra variable me almacene la ruta que se menciono anteriormente 

C:\Users\Juan\Documents\Proyecto\

Pero sin la ultima carpeta

C:\Users\Juan\Documents\

De antemano agradezco tu colaboración

Ruta2="C....."  hasta donde quieras.

Sdos!

Y como puedo hacer para que a cada escenario me lo enumere:

1. Validaciones para Renovación de Matricula de PN

2. Validaciones para Renovación de Matricula de PJ SOCIEDAD DE CUOTAS

3. Validaciones para Renovación de Matricula de PJ SOCIEDAD DE ACCIONES

Y que cada caso de prueba inicie con CP-01- y aumente sin importar si es de un escenario diferente es decir que en este ejemplo el ultimo CASO DE PRUEBA debe quedar con CP-17

CP-01-Habilite los campos para relacionar empleados para PN entre 18 y 35 años

CP-07-Habilitar botón para adjuntar Depósitos de estados financieros para PJ Sociedad de Cuotas entre 18 y 35 años

CP-17-No habilite el botón para adjuntar Depósitos de estados financieros para matriculas que no cumplan con la ley 1780

Ruta2="C....."  hasta donde quieras.

Lo que necesito es que al yo ingresar una dirección el automáticamente elimine la ultima carpeta (o las que sean necesaria) para utilizar la dirección para otro proceso.

Gracias

Inicia una nueva consulta porque ya me perdí con tantos cambios.

¡Gracias! 

Ya logre solucionar una de las preguntas que te hice, voy a crear una consulta nueva para la otra consulta, pero respecto a lo que ya tenemos

Sub creaDirectorios()
'x Elsamatilde
'el fin de rango lo indica la col C
X = Range("C" & Rows.Count).End(xlUp).Row
'contempla posible error de nbre inválido o carpeta ya creada
On Error Resume Next
'se recorre la tabla de datos desde B6 hasta x
For i = 6 To X
    If Range("B" & i) <> "" Then
        'se crea la carpeta
        Ruta = "C:\Users\Juan\Documents\Proyecto\"
        celda = Range("B" & i)
        midire = Ruta & celda
        MkDir midire
    End If
    'se crean las subcarpetas
    MkDir midire & "\" & Range("C" & i)
Next i
MsgBox "Fin del proceso"
End Sub

Como hago para hacer esto mismo lo analizo desde la tabal a en especifico para no tener que mencionar la celda sino el objeto Tabla y columna 

Ya logre solucionar una de las preguntas que te hice, voy a crear una consulta nueva para la otra consulta, pero respecto a lo que ya tenemos

Sub creaDirectorios()
'x Elsamatilde
'el fin de rango lo indica la col C
X = Range("C" & Rows.Count).End(xlUp).Row
'contempla posible error de nbre inválido o carpeta ya creada
On Error Resume Next
'se recorre la tabla de datos desde B6 hasta x
For i = 6 To X
    If Range("B" & i) <> "" Then
        'se crea la carpeta
        Ruta = "C:\Users\Juan\Documents\Proyecto\"
        celda = Range("B" & i)
        midire = Ruta & celda
        MkDir midire
    End If
    'se crean las subcarpetas
    MkDir midire & "\" & Range("C" & i)
Next i
MsgBox "Fin del proceso"
End Sub

Como hago para hacer esto mismo lo analizo desde la tabal a en especifico para no tener que mencionar la celda sino el objeto Tabla y columna 

 Elsa Matilde 

La macro enviada respondió perfectamente al modelo que presentaste. Y ya la considero cerrada.

Si ahora cambiaste de idea y decidiste pasar a un modelo de tabla, por favor inicia una nueva consulta indicando en el título que la búsqueda se hará en una Tabla. Esto ayudará a que otros usuarios puedan encontrar también la solución desde el buscador. Y no se pierdan los códigos entre tanta mezcla ;)

Ya te prepararé la otra macro. Mientras te responderé a tu otra consulta que acabo de ver en el tablón.

Sdos!

¡Gracias! 

Eres excelente Elsa Matilde 

Añade tu respuesta

Haz clic para o
El autor de la pregunta ya no la sigue por lo que es posible que no reciba tu respuesta.

Más respuestas relacionadas