31/01/2019
A menudo, al trabajar con macros en Excel, surge la necesidad de cerrar un libro de trabajo sin guardar los cambios realizados. Esto puede ser crucial para automatizar procesos, evitar errores o simplemente para optimizar el flujo de trabajo. En este artículo, exploraremos diferentes métodos para lograr esto utilizando VBA (Visual Basic for Applications) y discutiremos las mejores prácticas para implementar estas soluciones.

Métodos para Cerrar un Libro de Excel sin Guardar
Existen varias maneras de cerrar un libro de Excel sin guardar los cambios utilizando macros VBA. A continuación, se detallan dos métodos comunes y efectivos:
Método 1: Usando ActiveWorkbook.Close savechanges:=False
Este método es directo y eficiente. La línea de código ActiveWorkbook.Close savechanges:=Falsecierra el libro de trabajo activo sin solicitar confirmación para guardar los cambios. El argumento savechanges:=Falsees fundamental para evitar que se guarden los cambios realizados.
Ejemplo de implementación:
Sub CerrarSinGuardar()
ActiveWorkbook.Close savechanges:=False
End Sub
Este código, al ejecutarse, cerrará inmediatamente el libro de trabajo activo sin guardar los cambios. Es importante destacar que este método no mostrará ningún mensaje de advertencia, por lo que se debe usar con precaución en entornos donde la pérdida de datos pueda ser problemática.
Método 2: Usando ThisWorkbook.Saved = True
Este método es ligeramente diferente. En lugar de cerrar el libro directamente, se establece la propiedad Saveddel libro de trabajo actual ( ThisWorkbook) en True. Esto engaña a Excel haciéndole creer que el libro ya ha sido guardado. Posteriormente, se puede cerrar el libro usando el método Closesin el argumento savechanges, ya que Excel asumirá que no hay cambios por guardar.

Ejemplo de implementación:
Sub CerrarSinGuardar2()
ThisWorkbook.Saved = True
ThisWorkbook.Close
End Sub
Este método es útil en situaciones donde se necesita un mayor control sobre el proceso de cierre, aunque en la mayoría de los casos, el primer método resulta más sencillo y directo.
Consideraciones Importantes
Antes de implementar cualquiera de estos métodos, es crucial considerar las siguientes implicaciones:

- Pérdida de Datos: Estos métodos provocan la pérdida de los cambios no guardados. Es fundamental asegurarse de que no se requieran los cambios antes de ejecutar estas macros.
- Manejo de Errores: Idealmente, se debe incluir manejo de errores en el código para evitar problemas inesperados. Esto puede involucrar el uso de bloques
On Error Resume NextoOn Error GoTopara controlar posibles excepciones. - Seguridad: Si se implementan estas macros en un entorno compartido, es importante restringir el acceso a ellas para evitar usos no autorizados que puedan resultar en la pérdida de datos.
- Integración con otros eventos: Estas macros pueden integrarse con otros eventos de Excel, como el evento
Workbook_BeforeClosepara ejecutar acciones específicas antes de que el libro se cierre. Esto permite un control más preciso sobre el proceso.
Comparativa de Métodos
| Método | Código | Ventajas | Desventajas |
|---|---|---|---|
ActiveWorkbook.Close savechanges:=False | ActiveWorkbook.Close savechanges:=False | Simple, directo y eficiente. | No muestra advertencias. Puede ser peligroso si no se maneja correctamente. |
ThisWorkbook.Saved = True | ThisWorkbook.Saved = True: ThisWorkbook.Close | Mayor control sobre el proceso de cierre. | Algo más complejo de entender. |
Consultas Habituales
A continuación, se responden algunas consultas habituales relacionadas con el cierre de libros de Excel sin guardar cambios:
- ¿Cómo puedo evitar que el usuario guarde los cambios accidentalmente? Se puede usar la propiedad
Application.DisplayAlerts = Falseantes de ejecutar la macro de cierre yApplication.DisplayAlerts = Truedespués. Esto evitará que aparezcan mensajes de confirmación. - ¿Puedo automatizar este proceso para múltiples libros? Sí, se puede crear un bucle que itere sobre una colección de libros abiertos y cierre cada uno usando uno de los métodos descritos anteriormente.
- ¿Es posible proteger el libro para evitar modificaciones no autorizadas? Sí, Excel ofrece opciones de protección para hojas y libros que restringen las modificaciones, aunque esto no impide el uso de macros.
Protegiendo el Libro de Excel
Para evitar que los usuarios realicen cambios no deseados en un libro de Excel, además de las macros de cierre, se pueden implementar medidas de protección adicionales:
- Proteger Hoja: Esta opción protege el contenido de las celdas bloqueadas dentro de una hoja específica. Las celdas deben bloquearse previamente para que esta protección sea efectiva.
- Proteger Libro: Esta opción protege la estructura del libro, incluyendo la organización de las hojas y las ventanas. Previene que se muevan, se eliminen o se reordenen hojas.
- Permitir Modificar Intervalos: Esta opción permite definir rangos específicos de celdas que pueden ser modificados, mientras que el resto del libro permanece protegido.
- Contraseñas: Se pueden agregar contraseñas a la protección de hojas y libros para una mayor seguridad. Sin embargo, es importante recordar la contraseña, ya que no existe una forma de recuperarla si se olvida.
La combinación de macros que cierran sin guardar y las opciones de protección de Excel ofrece un control robusto sobre la integridad y la seguridad de los archivos. Es esencial elegir la estrategia que mejor se adapte a las necesidades específicas de cada situación, siempre teniendo en cuenta la posibilidad de pérdida de datos y la seguridad del sistema.
Recuerda que la implementación de estas técnicas requiere un conocimiento básico de VBA y Excel. Se recomienda probar las macros en un entorno de prueba antes de utilizarlas en archivos importantes para evitar cualquier problema inesperado.
Si quieres conocer otros artículos parecidos a Excel macro: cerrar libro sin guardar cambios puedes visitar la categoría Libros y Librerías.
