Macro que tome el archivo más reciente

Hola Experto,
Cómo hago para que una macro tome el archivo *.txt más reciente de una carpeta. Agradezco toda la atención e invaluable colaboración al respecto.
PeterCS

1 respuesta

Respuesta
1
Prueba con esta función. No la he probado pero creo que está bien escrita.
Option Explicit
Function buscarUltimoFicheroTexto(ByVal carpeta As String) As String
    Dim d As String
    Dim fechaFich As Date
    Dim maxFecha As Variant
    Dim maxD As String
    buscarUltimoFicheroTexto = ""
    maxFecha = DateSerial(100, 1, 1)
    If Right$(carpeta, 1) <> "\" Then carpeta = carpeta & "\"
    d = Dir$(carpeta & "*.txt", vbArchive)
    If d = "" Then Exit Function
    Do
        fechaFich = FileDateTime(carpeta & d)
        If maxFecha < fechaFich Then
            maxD = d
            maxFecha = fechaFich
        End If
        d = Dir$
    Loop Until d = ""
    buscarUltimoFicheroTexto = d
End Function
Hola Experto,
Probé pero algo falla, adjunto lo que hice:
Option Explicit
Function buscarUltimoFicheroTexto(ByVal carpeta As String) As String
    Dim d As String
    Dim fechaFich As Date
    Dim maxFecha As Variant
    Dim maxD As String
    buscarUltimoFicheroTexto = "Consolidado_comisiones*.lis"
    maxFecha = DateSerial(100, 1, 1)
    If Right$("R:\", 1) <> "\" Then carpeta = carpeta & "\"
    d = Dir$("R:" & "Consolidado_comisiones*.lis", vbArchive)
    If d = "" Then Exit Function
    Do
        fechaFich = FileDateTime(carpeta & d)
        If maxFecha < fechaFich Then
            maxD = d
            maxFecha = fechaFich
        End If
        d = Dir$
    Loop Until d = ""
    buscarUltimoFicheroTexto = d
End Function
Le reitero mis agradecimientos...
PeterCS
Disculpa pero acabo de ver que la última instrucción de la función (la que devuelve el valor) no era la correcta.
Por lo que creo entender por las modificaciones que has hecho a la función, lo que deberías poner es:
Option Explicit
Function buscarUltimoFicheroTexto() As String
    Dim d As String
    Dim fechaFich As Date
    Dim maxFecha As Variant
    Dim maxD As String
    buscarUltimoFicheroTexto = ""
    maxFecha = DateSerial(100, 1, 1)
    d = Dir$("R:\Consolidado_comisiones*.lis", vbArchive)
    If d = "" Then Exit Function
    Do
        fechaFich = FileDateTime("R:\" & d)
        If maxFecha < fechaFich Then
            maxD = d
            maxFecha = fechaFich
        End If
        d = Dir$
    Loop Until d = ""
    buscarUltimoFicheroTexto = maxD
End Function 
Si quieres que la función devuelva el nombre del archivo con el Path delante, tendrás sustituir la última instrucción por esta otra:
    buscarUltimoFicheroTexto = "R:\" & maxD

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas