Saltar al contenido

FRACCIONAR RUTA DE ARCHIVO


Recommended Posts

publicado

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

publicado

Suponiendo que tienes la ruta completa en la variable Ruta:

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

 

publicado

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

 

publicado

Para obtener la fila activa, observa como trabaja el objeto Cells

Cells(ActiveCell.Row, ActiveCell.Column)

Cells(ActiveCell.Row, 14)

Cells(ActiveCell.Row, "N")

 

Saludos 

publicado

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.

publicado
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 

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.