Jump to content

FRACCIONAR RUTA DE ARCHIVO


Recommended Posts

Buenos días a todos;

-Sería posible fraccionar la ruta de un archivo(?).

Por ejemplo si yo tengo esta ruta:

H:\MMail\CCF_000010.pdf

Quiero que en una celda me aparezca para la ruta:

H:\MMail\

y en otra el nombre:

10900.pdf

Adjunto archivo de prueba. 

Saludos

MRuta.xlsm

Link to comment
Share on other sites

Suponiendo que tienes la ruta completa en la variable Ruta:

i = InStrRev(Ruta, "\")
carpeta = Left(Ruta, i)
archivo = Mid(Ruta, i + 1)

 

Edited by Antoni
Link to comment
Share on other sites

Hola Antoni;

Si he probado el procedimiento que me has pasado y es el correcto.

Lo que me falta es un paso y no sé como configurarlo, te explico un poco y te inserto el código:

-Al capturar la ruta copio en la variable archivo  su nombre con su extensión y aquí no hay problema porque estamos siempre en la celda activa.

-En cambio el dato que se copia en la variable carpeta no sé como configurarlo. Este dato obtenido se tiene que ubicar en la misma fila que la celda activa  y en la columna 14.

Dim Cancel As Boolean
Dim Ruta As String, i As Integer, carpeta As String
Dim archivo As String
Dim col As Integer, fila As Integer

col = ActiveCell.Column
fila = ActiveCell.Row

If col = 11 And fila <> 1 Or col = 12 And fila <> 1 Then

   Set objFileDialog = Application.FileDialog(msoFileDialogFilePicker)
    ActiveCell.Value = Ruta
    With objFileDialog
        .AllowMultiSelect = False
        .ButtonName = "Aceptar"
        .Title = "Elija un archivo"
        If .Show = True Then
            Ruta = .SelectedItems(1)
            'ActiveCell.Value = Ruta
            i = InStrRev(Ruta, "\")
            
'            <<<<<<carpeta como no es celda activa hay buscar la fila de la celda activa + columna(14) para ubicar el dato de la variable>>>>>>
            carpeta = Left(Ruta, i)
'            <<<<<aquí he puesto una ubicación fija para probar>>>>>
            Sheets("Enviar").Cells(3, 14) = carpeta
            
'            <<<<<nombre archivo como es celda activa se ubica bien>>>>
            archivo = Mid(Ruta, i + 1)
            ActiveCell.Value = archivo
        Else
            Cancel = True
        End If
    End With
Else
End If
End Sub

 

Link to comment
Share on other sites

Muchas gracias  Gerson;

Desconocía esa instrucción.

Me imaginaba que tendría que ser con el ActiveCell, en realidad es una instrucción muy fácil.

Ahora va perfecto. 

Te agradezco mucho el apunte. 

Un abrazo  Gerson.

Link to comment
Share on other sites

Hace 20 minutos , Benito Bartolomé dijo:

Me imaginaba que tendría que ser con el ActiveCell, en realidad es una instrucción muy fácil.

Y para ampliar, dado que a veces utilizamos mas de una vez esa linea, te recomiendo siempre, pero siempre declarar y activar el objeto

Asi

Dim cel As Range
Set cel = ActiveCell

y al final del procedimiento, siempre descargar ese objeto

Set cel = Nothing

De esta forma, "cel" será un objeto mas como Range

 

Saludos 

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

Privacy Policy