Jump to content

FRACCIONAR RUTA DE ARCHIVO


Recommended Posts

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

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 New...

Important Information

Privacy Policy