Guardar y cerrar un libro Excel transcurrido un tiempo de inactividad

Compatibilidad: Truco compatible con Excel 365Truco compatible con Excel 2016Truco compatible con Excel 2013Truco compatible con Excel 2010Truco compatible con Excel 2007

En muchas ocasiones nos interesa guardar y cerrar un libro transcurrido un tiempo de inactividad, de forma automática.

Guardar y cerrar un libro Excel transcurrido un tiempo de inactividad
  • MACRO EN MÓDULO VBA
  1. Abrir el libro Excel deseado.

  2. Pulsar la tecla Alt y mantener pulsada / Pulsar la tecla F11. Mostrará el editor de Visual Basic.

  3. Ir a: Barra de Menú / Insertar / Módulo. Mostrará la ventana del módulo donde escribimos la macro.

    Explorador de Proyectos con módulo1 seleccionado
  4. Escribir el código de la macro:

    Dim Tiempo As Date

    Sub Reloj()

    Tiempo = Now + TimeValue("00:02:00")

    On Error Resume Next

    Application.OnTime EarliestTime:=Tiempo, _
    Procedure:="Salir", Schedule:=True

    End Sub

    Sub Para()

    On Error Resume Next

    Application.OnTime EarliestTime:=Tiempo, _
    Procedure:="Salir", Schedule:=False

    End Sub

    Sub Salir()

    ActiveWorkbook.Close Savechanges:=True

    End Sub

    - TimeValue("00:02:00"). Representa el tiempo de inactividad.

  • MACRO EN LIBRO
  1. Ir a: Explorador de Proyectos / VBAProject / Doble Clic sobre ThisWorkbook (libro). Si el panel no está visible Ir a: Barra de menú / Ver / Explorador de proyectos. Mostrará la ventana donde escribimos la macro.

    Explorador de Proyectos con macro en ThisWorkbook
  2. Escribir el código de la macro:

    Private Sub Workbook_BeforeClose(Salir As Boolean)

    Call Para

    End Sub

    Private Sub Workbook_Open()

    Call Reloj

    End Sub

    Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)

    Call Para
    Call Reloj

    End Sub

  3. Guardar el libro con la extensión *.xlsm. Libro habilitado para macros.

  • EJECUTAR LA MACRO
  1. Abrir el libro que contiene la macro.

  2. Transcurrido el tiempo fijado en la macro (de inactividad) / Guarda los cambios realizados / Cierra el libro Excel automáticamente.

  3. Si nunca se ha guardado el libro, mostrará el cuadro de diálogo Guardar como, para indicar la carpeta y el nombre de almacenamiento.

Nivel de dificultad: Experto VBA-Macros Excel Experto VBA - Macros

11 comentarios en “Guardar y cerrar un libro Excel transcurrido un tiempo de inactividad

  • Hola
    Buenas tardes
    Ya estudie lo que comentas y lo utilicé para un área que nos metía en bastantes problemas...!
    Una duda...
    Y cómo sería si quiero crear una copia del libro, sin tener que renombrar el libro activo..?

    Muchas gracias por compartir tus conocimientos...!

    Saludos desde la CDMX.

  • Hola
    Buenas tardes

    La verdad, excelente portal...!

    Una sugerencia: Se puede indicar en alguna parte del archivo la fecha y la hora cuando se cierra el libro automaticamente.

    Saludos desde la CDMX.

    • Hola Francisco,

      La macro inserta la fecha y hora actual antes de cerrar el libro. Se deberá de insertar en: ThisWorkbook:

      Private Sub Workbook_BeforeClose(Cancel As Boolean)

      Worksheets("Hoja1").Activate
      Range("A1").Select
      Do While ActiveCell.Value <> ""
      ActiveCell.Offset(1, 0).Select
      Loop
      Selection.Value = Now
      Selection.NumberFormat = "m/d/yyyy h:mm:ss AM/PM"

      End Sub

      Cambia Hoja1 por la hoja deseada para insertar la fecha y A1 para la columna.

      Saludos.

  • Seria posible que se reinicie el timer cada vez que se desplace alguna celda o se seleccione algo (sin que necesariamente se haga alguna modificación) ?

  • Excelente Macro, no pensé que se podía hacer esto.
    Vengo desarrollando macros en mi trabajo buen tiempo y siempre hay el problema de que algún usuario deje el archivo abierto y este archivo se requiera que sea uno solo, con esta macro se salva este problema.

    Felicitaciones al desarrollador.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.