miércoles, 17 de agosto de 2016

Como evitar cerrar libros de Excel con VBA


He vuelto!!! y con muchos mas trucos y tips que he aprendido en estos últimos meses. Entre ellos me preguntaron como evitar cerrar un libro de Excel desde un macros, y aquí tengo la respuesta.
Es muy sencillo, allí van los pasos:

Paso 1: Primero entro al Visual Basic for Application (Con las teclas ALT + F11).


Paso 2: Inserto un módulo (Menú Insertar // Módulo) y copio el siguiente código:

Public Permiso As Boolean

Sub Cierre()
  Call DamePermiso

  ActiveWorkbook.Save
  ActiveWorkbook.Close
End Sub

Public Sub DamePermiso()
  Permiso = True
End Sub

Paso 3: En el objeto ThisWorkbook copio el siguiente código:


Private Sub Workbook_BeforeClose(Cancel As Boolean)

If Permiso <> True Then
    MsgBox "No tiene permiso para cerrar"
    Cancel = True
End If

End Sub

Paso 4. Cierro el Visual Basic.

Paso 5. En una hoja de Excel agrego un objeto o una forma y le asigno la Macro Cierre





Ahora cada vez que cierren el archivo desde la esquina superior derecha, o desde el menú Archivo // Cerrar;  les saldrá el siguiente mensaje:

Solo si hacen clic en el botón que tienen asignado la macros Cierre , el archivo libro se cerrará y guardará automáticamente..

Espero que les sirva.

Ing. Enrique Neciosup Morales

1 comentario:

  1. Hola, cómo estás?
    He utilizado este código y funciona de manera estupenda, el único inconveniente es que me cierra todos los libros que tenga abiertos en el momento, podrías indicarme la manera de evitar eso, para que únicamente cierre el libro activo?
    Gracias

    ResponderBorrar