Extraer caracteres aleatorios con VBA

Para Dante Amor. Buenos días Dante el otro día me apoyaste en generar una macro para extraer de una cadena el nombre del archivo, el ejemplo fue este "C:\Users\jaibus\Admin\AVANCE SEM## (ALIAS).xlsx", estoy modificando la macro que me programaste para obtener ahora la carpeta donde se encuentra el archivo, es decir "Admin" pero n o logro entender del todo la macro. Me podrias ayudar nuevamente. La macro que me realizaste es la siguiente:

Public Sub Extraer()
With Range("I2:I" & Range("H" & Rows.Count).End(xlUp).Row)
        .FormulaR1C1 = _
            "=MID(RC[-1],FIND(REPT(CHAR(1),1),SUBSTITUTE(RC[-1],""\"",REPT(CHAR(1),1),LEN(RC[-1])-LEN(SUBSTITUTE(RC[-1],""\"",""""))))+1,LEN(RC[-1]))"
        .Value = .Value
    End With

End Sub

1

1 respuesta

Respuesta
1

Te anexo la macro completa para obtener toda la ruta, la última carpeta y el nombre del archivo. Si tus datos están en la columna H, el resultado quedaría así:

la macro:

Sub Extraer()
'Por.Dante Amor
    With Range("I2:I" & Range("H" & Rows.Count).End(xlUp).Row)
        .FormulaR1C1 = _
            "=MID(RC[-1],1,FIND(REPT(CHAR(1),1),SUBSTITUTE(RC[-1],""\"",REPT(CHAR(1),1),LEN(RC[-1])-LEN(SUBSTITUTE(RC[-1],""\"",""""))))-1)"
        .Value = .Value
    End With
    With Range("J2:J" & Range("H" & Rows.Count).End(xlUp).Row)
        .FormulaR1C1 = _
            "=MID(RC[-1],FIND(REPT(CHAR(1),1),SUBSTITUTE(RC[-1],""\"",REPT(CHAR(1),1),LEN(RC[-1])-LEN(SUBSTITUTE(RC[-1],""\"",""""))))+1,LEN(RC[-1]))"
        .Value = .Value
    End With
    With Range("K2:K" & Range("H" & Rows.Count).End(xlUp).Row)
        .FormulaR1C1 = _
            "=MID(RC[-3],FIND(REPT(CHAR(1),1),SUBSTITUTE(RC[-3],""\"",REPT(CHAR(1),1),LEN(RC[-3])-LEN(SUBSTITUTE(RC[-3],""\"",""""))))+1,LEN(RC[-3]))"
        .Value = .Value
    End With
End Sub

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas