Lupa Extraer Nombre de Archivo

Saludos. Buenas tardes. Tengo un formulario de usuario donde, como aparece en la imagen tengo un combobox y una lupita que debe dirigirme hacia una carpeta o directorio local en mi pc en donde tengo archivo pdf. No he podido configurar la linea de código VBA que debe tener la lupita para que al seleccionar un archivo solo extraiga el nombre del archivo seleccionado y luego lo cargue dentro del combobox. Por favor si alguno me puede ayudar. Saludos. Muchas gracias. Alberto.

Respuesta
1

Para extraer solo el nombre del archivo, sin su ruta, esta sería la macro. Lo que hará es buscar la barra final antes del nombre.

Private Sub CommandButton1_Click()   'buscar
milibro = Application.GetOpenFilename
'si la variable está vacía significa que cancelamos la ventana de diálogo
If milibro = False Then
    TextBox1 = ""
Else
    'se extrae el nombre
    For i = Len(milibro) To 1 Step -1
        If Mid(milibro, i, 1) = "/" Or Mid(milibro, i, 1) = "\" Then
            TextBox1 = Mid(milibro, i + 1, Len(milibro) - i)
            Exit For
        End If
    Next i
End If
End Sub

Ajustá los nombres de tus controles. Yo utilicé un textbox para guardar el archivo elegido.

Estimada Elsa Matilde.

Muchas gracias por tu ayuda. Me ayudas mucho a lo que estoy realizando. Excelente.Un abrazo.

Alberto

Elsa María. Disculpa por favor molestarte de nuevo.

¿Me puedes por favor indicar la línea de código para que en vez de tomarme el nombre me tome la ruta del archivo elegido?

Muchas gracias Elsa María.

Saludos,

Alberto Mora

Elsa María. Disculpa por favor molestarte de nuevo.

¿Me puedes por favor indicar ahora la línea de código para que en vez de tomarme el nombre me tome la ruta del archivo elegido?

Muchas gracias Elsa María. Disculpa molestarte de nuevo.

Saludos,

Alberto Mora

En la macro separé en 2 instrucciones (más simples) la parte de la ruta y la del archivo elegido.

Esos campos los ubico en 2 textbox ... pero esas líneas son solo de ejemplo.

Private Sub CommandButton1_Click()   'buscar
milibro = Application.GetOpenFilename
'si la variable está vacía significa que cancelamos la ventana de diálogo
If milibro = False Then
    TextBox1 = "": TextBox2 = ""     'controles donde se vuelca la info 
Else
    'se separa el nombre de la ruta
    libro = Dir(milibro)       'nombre del archivo elegido
    Ruta = Mid(milibro, 1, InStr(1, milibro, libro) - 1)   'ruta
   'Opcional: guardar datos en 2 textbox
    TextBox1 = libro
    TextBox2 = Ruta
End If
End Sub

Sdos!

Estimada Elsa María. Muchas gracias. Funciono tu código a la perfeccción. Muy agradecido contigo eres muy amable y atenta en compartir tu conocimiento. Muchas gracias.

Elsa María. Por favor. Para que la ruta me incluya el nombre del archivo que debo agregar al código?

Mil Gracias.

Saludos.

Alberto

Para empezar soy Elsa Matilde ;)

La información completa la tiene la variable 'milibro'.

Y si vas a tomar los datos desde los controles, porque quizás lo rellenan o sobreescriben allí, se arma la cadena de este modo, por ejemplo:

cadena = Textbox1 & "/" & Textbox2

Sdos!

Hola Elsa Matilde. Ahora si con tu nombre:

Elsa Matilde, de este primer código que me enviaste que debo modificar para que exclusivamente me tome el nombre del archivo SIN la extensión.

Mil gracias.

Private Sub CommandButton1_Click()   'buscar
milibro = Application.GetOpenFilename
'si la variable está vacía significa que cancelamos la ventana de diálogo
If milibro = False Then
    TextBox1 = ""
Else
    'se extrae el nombre
    For i = Len(milibro) To 1 Step -1
        If Mid(milibro, i, 1) = "/" Or Mid(milibro, i, 1) = "\" Then
            TextBox1 = Mid(milibro, i + 1, Len(milibro) - i)
            Exit For
        End If
    Next i
End If
End Sub

Gracias Abrazo.

Alberto

Para extraer el nombre del archivo podés utilizar el segundo método que te envié:

If milibro = False Then
    TextBox1 = "": TextBox2 = ""     'controles donde se vuelca la info 
Else
    'se separa el nombre de la ruta
    Libro = Dir(milibro) 'nombre del archivo elegido

De todos modos las 2 maneras te devolverán el archivo con la extensión.

Por lo que en ambos casos habría que restar 4 considerando que siempre serán '.pdf':

 Libro = Left(Dir(milibro), Len(Dir(milibro)) - 4)

Y obteniendo el nombre con el bucle sería:

 TextBox1 = Mid(milibro, i + 1, Len(milibro) - i - 4)

PD) Si luego necesitas extraer archivos con diferentes extensiones, por favor deja una nueva consulta en el tablón porque ya nos estaríamos saliendo del tema de la consulta original.

Sdos!

Elsa Matilde.

Muchas gracias. Modifique el método según tu instrucción y ya logré lo que pretendía (obtener el nombre de archivo sin la extensión).

Muchas gracias por toda tu ayuda. Cierro esta consulta.

Saludos,

Alberto

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas