Cómo añadir marca de tiempo "Última actualización" en Excel con macro
Excel no tiene función nativa "última vez guardado" que no se actualice al abrir. AHORA() y HOY() son volátiles (cambian al abrir/calcular). La solución: macro VBA que lee la propiedad integrada "Last Save Time" del archivo.
Pasos (Excel 365, 2021, 2019, 2016, 2013, 2010)
- Guarda tu libro como Libro de Excel habilitado para macros (.xlsm): Archivo > Guardar como > Tipo: Libro de Excel habilitado para macros (*.xlsm).
- Pulsa Alt+F11 para abrir Editor VBA.
- En Explorador de proyectos (izquierda), clic derecho en VBAProject (TuLibro.xlsm) > Insertar > Módulo.
- Pega este código en el módulo:
Function ULTIMA_ACTUALIZACION() As Date ' Devuelve la fecha/hora del último guardado del libro On Error Resume Next ULTIMA_ACTUALIZACION = ThisWorkbook.BuiltinDocumentProperties("Last Save Time") On Error GoTo 0 End Function - Cierra Editor VBA (vuelve a Excel).
- En la celda donde quieres la fecha, escribe:
=ULTIMA_ACTUALIZACION()y pulsa Enter. - Formatea la celda: clic derecho > Formato de celdas > Fecha o Personalizada (ej.
dd/mm/aaaa hh:mm). - Guarda el archivo (Ctrl+S). La fecha se actualizará solo al guardar, no al abrir.
💡 Mejoras
- Para que se actualice automáticamente al guardar, añade en ThisWorkbook (doble clic en ThisWorkbook en Explorador VBA):
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) Application.CalculateFullRebuild ' Fuerza recálculo de la UDF End Sub - Si usas OneDrive/SharePoint (AutoGuardado), la propiedad "Last Save Time" se actualiza en cada auto-guardado (cada pocos segundos). La macro reflejará eso.
⚠️ Advertencias
- Archivos .xlsm (macros) pueden ser bloqueados por antivirus, firewalls corporativos, email (Outlook, Gmail). Firma digital el proyecto VBA (Herramientas > Propiedades del proyecto > Firma digital) o comparte vía enlace OneDrive/SharePoint.
- La propiedad "Last Save Time" es de metadatos del archivo OOXML. Si copias el archivo (Explorador > Copiar/Pegar), la copia tiene nueva fecha de creación/modificación de Windows, pero la propiedad interna "Last Save Time" se conserva del original hasta que se guarda en Excel.
- Funciona en Windows y Mac (Excel 2016+ Mac).
🔧 Alternativa sin macros (Power Query / Office Scripts / Python en Excel)
En Excel 365 con Python en Excel (Insiders): =PY(ThisWorkbook.BuiltinDocumentProperties["Last Save Time"]). En Power Automate / Office Scripts: leer propiedad vía Graph API.
- ·Cómo colocar imágenes una al lado de la otra
- ·Cómo proteger con contraseña un archivo de Excel
- ·Cómo mover macros de Excel a otro ordenador
- ·Cómo comprimir un archivo de Excel
- ·Cómo quitar contraseña de un libro de Excel
- ·Cómo determinar la versión de un archivo de MS Excel
- ·Cómo crear un archivo CFG de configuración en Windows
- ·Qué es un libro de Excel habilitado para macros (.xlsm)
- Cómo crear archivos XLS (hojas de cálculo de Excel)
- Cómo recuperar un archivo de Excel del guardado automático
- Cómo recuperar un archivo de Excel no guardado: AutoRecuperar y AutoGuardar
- Cómo dejar de compartir un libro de trabajo en Excel 2013
- Cómo convertir CSV a Excel (.xlsx) manteniendo datos intactos
- Cómo exportar contactos de Outlook (.pst) a Excel (.xlsx)
