¿Cómo guardar y registrar la hora en una celda?

Necesito registrar la hora de guardado del libro, lo tengo en el evento aftersave

Pero el evento no funciona. Yo asumo que debería correr la macro en el momento que pulse Ctrl+G

Mi código es este:

----------------------------------------------------------------------------------------------------------------------------------

Private Sub Workbook_AfterSave(ByVal Success As Boolean)
If Success = True Then
Application.EnableEvents = False
Call Guardar_CFecha
Application.EnableEvents = True
End If
End Sub

----------------------------------------------------------------------------------------------------------------------------------
Sub Guardar_CFecha()
Sheets("Listas").Visible = True
Sheets("Listas").Range("d50").Select
Selection.End(xlUp).Select
ActiveCell.Offset(1, 0).Select
Selection.Value = "Guardado por ultima vez el " & Now
End Sub

2 respuestas

Respuesta
1

Evento Change

Usaremos el evento Change asociado a una hoja, el cual nos ayudará a detectar cualquier celda modificada en la Hoja1. Para usar el evento, realizamos los siguientes pasos:

  • Damos clic derecho sobre la etiqueta la Hoja1 > Ver código.

  • Se abre el IDE de VBA.

  • En el Combo General elegimos Worksheet.

  • Ahora en el Combo de la derecha elegimos Change.

  • Escribimos en VBA una macro que nos genere el histórico de celdas modificadas.

    Descarga el archivo de ejemplo

    Histórico de celdas modificadas – EXCELeINFO.zip

Private Sub Worksheet_Change(ByVal Target As Range)
Dim HojaLog As Worksheet
Dim RangoLog As Range
Dim NuevaFila As Integer
If Target.Column <= 5 And Target.Row <= 4 Then
    Set HojaLog = ThisWorkbook.Sheets("Log")
    Set RangoLog = HojaLog.Range("A1").CurrentRegion
    NuevaFila = RangoLog.Rows.Count + 1
    With HojaLog
        .Cells(NuevaFila, 1).Value = Date
        .Cells(NuevaFila, 2).Value = Time
        .Cells(NuevaFila, 3).Value = Target.Address
        .Cells(NuevaFila, 4).Value = Application.UserName
    End With
End If
End Sub

¡Gracias! La verdad es que el archivo de ejemplo rebaso mis expectativas, que solo eran guardar un registro now de guardado del archivo en el evento afersave, que por cierto me queda la duda del porque no funciona. Al final surgieron otras ideas. Muchas gracias.

Respuesta
1

No necesariamente necesitas hacerlo en el momento de guardarlo.

Te paso una función que te permitirá lo mismo en cualquier momento:

Function UltimaFechaGuardado() As Date
UltimaFechaGuardado = ActiveWorkbook.BuiltinDocumentProperties(12)
End Function

Luego en la celda que lo quieras mostrar solo escribes: 

= UltimaFechaGuardado() 

No te olvides de darle el formato de fecha o fecha - hora a esa celda.

¡Gracias! Me parecido excelente la función, aunque mi intención era hacer un historial de guardado, lo cual es necesario cuando se tienen archivos similares o duplicados, y necesitas siempre la ultima version. Saludos y nuevamente mil gracias.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas