jueves, 8 de noviembre de 2018

VBA: FileDateTime abrir el fichero más reciente

Hoy toca aprender algo de una función VB poco conocida: FileDateTime.
Función que nos permite dar respuesta a un usuario:
[...]  ¿Cómo puedo abrir el archivo más reciente? Es que en la carpeta donde va a buscarlo va a haber varios que se llaman muy parecido, sólo cambia el final del nombre que será la hora de creación (*o7_35.xlsm, *10_28.xlsm, *18_13.xlsm)[...]


Lo interesante de esta función de VB es que nos devuelve un dato tipo Variant que indica la fecha y hora cuando se creó o modificó por última vez un archivo... precisamente el dato relevante que necesitamos para resolver nuestro problema: Abrir el fichero más reciente.

Insertamos el siguiente procedimiento 'Sub' en un módulo estándar:

Sub AbrirFicheroMasReciente()

Dim Ruta As String, archivo As String, ultArchivo As String
Dim ultFecha As Date, UFM As Date 'fecha última modificación

Ruta = "E:\excelforo\"
'controlamos la ruta es´te correctamente escrita, con el último separador \
If Right(Ruta, 1) <> "\" Then Ruta = Ruta & "\"
'definimos el tipo de fichero sobre el que trabajar
'cualquier fichero de Excel
archivo = Dir(Ruta & "*.xls*", vbNormal)

If Len(archivo) = 0 Then
    'verificamos que existe algú nfichero de Excel en la carpeta
    MsgBox "Mala suerte... No existe ningún archivo de Excel en esta carpeta", vbExclamation
    Exit Sub    'salimos del procedimiento
End If

'recorremos todos los ficheros de Excel existentes
Do While Len(archivo) > 0
    'la función de VBA FileDateTime
    'Devuelve una Variant(Date) que indica la fecha y hora cuando se creó o modificó por última vez un archivo.
    UFM = FileDateTime(Ruta & archivo)
    'comparamos con la última fecha revisada
    'este condicional nos conduce a la fecha mayor, i.e., la más reciente
    If UFM > ultFecha Then
        ultArchivo = archivo
        ultFecha = UFM
    End If
    'liberamos la variable y preparamos para el siguiente archivo
    archivo = Dir
Loop

'acabamos abriendo el fichero con la fecha de modificación más reciente...
Workbooks.Open Ruta & ultArchivo

End Sub



Y listo, podemos ejecutar nuestra macro, que abrirá el fichero con la mayor fecha de modificación, es decir, la más reciente.

No hay comentarios:

Publicar un comentario

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