martes, 13 de marzo de 2018

VBA: Abrir un fichero con nombre aproximado

Hace algunos días un usuario planteaba una cuestión interesante a través de un comentario.
Preguntaba por la manera de abrir un fichero con macros sabiendo únicamente el comienzo del nombre del fichero (y su ubicación).
[...]necesito que una macro me abra un archivo que empieza por un texto fijo pero el final va cambiando.
Por ejemplo, tengo un archivo que se llama artículos genéricos, pero luego puede llevar un número que va cambiando.
¿Hay alguna forma de decirle al programa que abra el documento que empieza por "artículos genéricos*"?[...]


La solución la encontramos en el uso de los comodines, el asterisco en este caso... que nos servirá para componer el nombre del fichero a buscar.

Así pues añadimos la siguientes macro dentro de la ventana de código de un módulo estándar en nuestro proyecto de VB:

Sub Abrir_Workboook_con_Nombre_Parecido()
Dim WB As Workbook
Dim miRuta As String, miFichero As String
miRuta = "E:\excelforo\"
'indicamos cuál es el nombre aproximado del fichero
'emplamos el comodín *
miFichero = Dir(miRuta & "*Scenarios.xlsm")

'lanzamos rutinas si hemos indicado algún fichero
Do While miFichero <> ""
    Application.ScreenUpdating = False
    'abrimos....
    Set WB = Workbooks.Open(miRuta & miFichero)
    nombre = WB.Name
    'y pedimos confirmación al usuario de que es el correcto...
    If MsgBox("Seguro que es este libro el que quieres abrir?" & vbTab & nombre, vbYesNo) = vbYes Then
        'si es correcto nos vamos a la etiqueta 'continua'
        'y realizamos las acciones que deseemos sobre el libro abierto
        GoTo continua
    Else
        'si no es el libro deseado lo cerramos
        WB.Close
    End If
    'Para obtener más nombres de archivo que coincidan con la Ruta,
    'volveremos a llamar a la función Dir sin argumentos
    miFichero = Dir()
Loop
Exit Sub

continua:
'aquí trabajaríamos con el libro abierto...

'y al terminar
'cerramos el libro
WB.Close
MsgBox "Fichero encontrado... y cerrado " & nombre

End Sub



Se observa el uso del comodín en la definición del nombre del fichero:
miFichero = Dir(miRuta & "*Scenarios.xlsm")

donde se indica que el fichero termina con la palabra 'Scenarios.xlsm'

Con lo que se soluciona la duda planteada.

No hay comentarios:

Publicar un comentario

Nota: solo los miembros de este blog pueden publicar comentarios.