Ir al contenido principal

Guardar un libro de Excel con macros antes de cerrar

Esta macro es una excelente manera de proteger a los usuarios de cierres inesperados de sus archivos antes de guardarlos. Una vez implementada, asegura que Excel guarda el libro automáticamente antes de cerrar.


¿Cómo Funciona?

Este código se desencadena por el evento BeforeClose del libro. Cuando intenta cerrar el libro, este evento se desencadena, ejecutando el código dentro. El secreto del código es simple, pregunta al usuario si realmente quiere cerrar el libro. A continuación, la macro evalúa si el usuario ha hecho clic en ok o cancelar.

La evaluación se realiza con una sentencia Select Case. La sentencia Select Case es una alternativa a la instrucción If ... Then ... Else, que te permite realizar condicionales en tus macros. La estructura básica de una sentencia Select Case es simple:

Select Case <alguna expresión a validar>

Case Is = <algún valor>
<alguna acción>

Case Is = <algún otro valor>
<otra acción>

En Select


Con una sentencia Select Case, puedes realizar muchas comprobaciones condicionales. En este caso, simplemente estamos revisando un OK o CANCEL. Echa un vistazo al código:

Private Sub Workbook_BeforeClose(Cancel As Boolean)

'Paso 1:  Activa la caja del mensaje e inicia la validación
    Select Case MsgBox("Save and close?", vbOKCancel)

'Step 2: Si se presiona el botón cancelar, entonces se cancela la operación.
    Case Is = vbCancel
    Cancel = True

'Step 3: Si se presiona el botón OK, se guarda el libro.

    Case Is = vbOK
    ActiveWorkbook.Save


'Step 4: Se cierra la sentencia Select Case.

End Select
End Sub
Paso a Paso:
  1. En el paso 1, activamos el cuadro de mensaje como la comprobación de condición para la instrucción select case. Aquí usamos el argumento vbOKCancel para asegurar que los botones Aceptar y Cancelar se presenten como opciones.
  1. Si el usuario hizo clic en Cancelar en el message box, la macro le indica a Excel que cancele el evento workbook_Close. Esto se hace pasando True al Cancel Boolean
  1. Si el usuario hizo clic en Aceptar en el message box, el paso 3 entrará en acción. A continuación, le decimos a Excel que guarde el libro. Y como no establecimos el valor Cancel Boolean en True, Excel continúa con el cierre.
  1. En el paso 4, simplemente cerramos la instrucción Select Case.

¿Cómo usar la Macro?



Para implementar esta macro, debes copiarla y pegarla en la ventana de código del evento workbook_BeforeClose. Colocar la macro allí permite ejecutarla cada vez que se intenta cerrar el libro.



Comentarios

Entradas populares de este blog

Análisis de Sensibilidad: Tablas de Datos

Valor Futuro de una Suma Presente

Calculadora para Conversión de Tasas de Interes