Ayuda con Macro

Hola Experto:
Estoy elaborando una macro para abrir un archiov que grabo por fechas (Lote 0301211 08:15.xls) y así cada vez que necesito generar un archivo por lo que en ocasiones tengo varios archivos el mismo día o solamente uno al día, lo que quiero hacer es que la macro busque el archivo más reciente y lo abra. Espero habber explicado el caso correctamente.
Espero su respuesta
Gracias Luis Lauro

1 Respuesta

Respuesta
1
No entiendo el formato de fecha que se está utilizando y los dos puntos de la hora no se podrían usar en un nombre de archivo válido para windows.
Bueno dejame ver si puedo explicarme mejor el nombre del archivo es de esta manera
Lote 03032011 0815.xls
Donde 03 es el mes 03 el día 2011 el año y las 0815 que dice que el archivo fue grabada en marzo 1 del 2011 a las 815 horas.
Este archivo se graba varias veces al día, por lo que quisiera ver la posibilidad que mediante una macro se abra el achivo más próximo, por ejemplo si tuviera los siguientes archivos
Lote 03012011 0815.xls ( Lote 03(Marzo) 01 (día 1) 2011 a las 8:15 horas)
Lote 03022011 0910.xls ( Lote 03(Marzo) 02 (día 2) 2011 a las 9:10 horas)
Lote 03022011 0218.xls ( Lote 03(Marzo) 02 (día 2) 2011 a las 02:18 horas)
Por lo que si yo aplicar la macro esta debería de abrir el archivo con el nombre
Lote 03022011 0218.xls el cual seria el más reciente de los tres.
Espero que me allá podido explicar mejor. Agradezco ty ayuda.
Luis Lauro
Se me ocurre obtener los nombres de los archivos y extraer la fecha de ellos y luego utilizar algunas de las herramientas de Excel, como ordenar...
La macro debe estar en un libro en el mismo directorio donde están los archivos en cuestión o debe modificarse para tomar los archivos de otro directorio...
Y lo que hace es tomar los nombres de los archivos y llevarlos a una hoja nueva desde la celda A1, luego extrae la fecha de cada nombre y las lleva a la columna B, luego ordena las fechas y abre el nombre de archivo que queda en A1, la más reciente... Esta buena la Macro... Éxitos, un saludo y no olvides calificar...
...
Sub AbrirArchivoReciente()
Dim LaFecha As Date
On Error Resume Next
Sheets.Add After:=Sheets(Sheets.Count)
LaHoja = ActiveSheet.Name
ElLibro = ActiveWorkbook.Name
Set fs = CreateObject("Scripting.FileSystemObject")
ruta = ActiveWorkbook.Path
Set directorio = fs.GetFolder(ruta)
Set ficheros = directorio.Files
Range("A1").Select
For Each archivo In ficheros
    If archivo.Name <> ActiveWorkbook.Name And archivo.Name <> "~$" & ActiveWorkbook.Name Then
        ActiveCell = archivo.Name
        ActiveCell.Offset(1, 0).Select
    End If
Next
Set fs = Nothing
Set directorio = Nothing
Set ficheros = Nothing
Range("A1").Select
While ActiveCell.Value <> ""
    Mes = Mid(ActiveCell.Value, 6, 2)
    Dia = Mid(ActiveCell.Value, 8, 2)
    Año = Mid(ActiveCell.Value, 10, 4)
    Hora = Mid(ActiveCell.Value, 15, 2)
    Minuto = Mid(ActiveCell.Value, 17, 2)
    LaFecha = Mes & "-" & Dia & "-" & Año & " " & Hora & ":" & Minuto
    ActiveCell.Offset(0, 1).Value = LaFecha
    ActiveCell.Offset(1, 0).Select
Wend
Columns("A:B").AutoFit
Range("A1").Select
ActiveWorkbook.Worksheets(LaHoja).Sort.SortFields.Clear
ActiveWorkbook.Worksheets(LaHoja).Sort.SortFields.Add Key:=Range("B:B"), _
    SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets(LaHoja).Sort
    .SetRange Range("A:B")
    .Header = xlGuess
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
End With
Workbooks.Open Filename:=Range("A1").Value
Windows(ElLibro).Activate
Application.DisplayAlerts = False
Sheets(LaHoja).Delete
Application.DisplayAlerts = True
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas