prucommercialre.com


Abrir un libro de trabajo, pero Deshabilitar Macros

Bob está procesando información en un libro mediante una macro. A él le gustaría para la macro para abrir un segundo libro que tiene una macro AutoClose en él, pero él no quiere que se ejecute cuando el segundo libro está cerrado. Él está buscando una manera de abrir el segundo libro, bajo el control de la macro en el primer libro, sin habilitar las macros en el segundo libro.

No hay manera de desactivar las macros en el segundo libro al abrir bajo control macro. (Si va a abrir de forma manual, es obvio que puede mantener pulsada la tecla Mayús mientras abre el libro, pero eso no ayudará a su macro-que no tiene dedos para sujetar sembradas que la clave!)

Hay un par de soluciones, sin embargo. La primera consiste en la modificación de su código que cierra el segundo libro de trabajo, de esta manera:

Application.EnableEvents = False
Libros de Trabajo ("SecondBook.xls"). Cerrar
Application.EnableEvents = True

Al establecer la propiedad EnableEvents en False, el evento que va a suceder (cerrar el libro) no dará lugar a la macro AutoClose. Usted puede (y debe) a continuación, establezca la propiedad EnableEvents a True para que los eventos más tarde pueden continuar.

Otra solución consiste en establecer una especie de "bandera" en la macro AutoClose del segundo libro. Este indicador podría poner a prueba para ver si el primer libro está abierto, y si lo es, no ejecute el código principal en la macro AutoClose.

Para ello, en el segundo libro en la parte superior del módulo de páginas añadir el siguiente código:

Dim AutoCloseDisabled como Boolean
DisableAutoClose Sub ()
AutoCloseDisabled = True
End Sub

Tenga en cuenta que la sentencia de declaración de la variable AutoCloseDisabled está fuera de cualquier procedimiento, lo que significa que va a tener un alcance global y accesible dentro de todos los procedimientos.

A continuación, modifique la macro AutoClose de modo que su cuerpo está encerrado dentro de una sentencia Si, como se muestra aquí:

Sub AutoClose ()
'declaraciones de variables aquí

Si No AutoCloseDisabled entonces

'Cuerpo de AutoClose aquí

End if
End Sub

La idea es que cuando el segundo libro se abre con normalidad, la variable AutoCloseDisabled se ajustará automáticamente en Falso. (Variables booleanas defecto a False cuando se declaran.) Dado que el procedimiento DisableAutoClose nunca se ejecuta en el libro, la instrucción If en la macro AutoClose permite que el cuerpo real de la macro a ejecutar.

Si abre el segundo libro de su primer libro, luego el código en tu primer libro puede llamar a la macro DisableAutoClose en el segundo libro de trabajo, estableciendo así la bandera AutoCloseDisabled True. Esto significa que cuando el segundo libro está cerrado, la instrucción If saltará sobre el cuerpo de la macro AutoClose.

ExcelTips es su fuente de capacitación rentable Microsoft Excel. Esta punta (3158) se aplica a Microsoft Excel 97, 2000, 2002, y 2003. Usted puede encontrar una versión de este consejo para la interfaz de cinta de Excel (Excel 2007 y versiones posteriores) aquí: Abrir un libro de trabajo, pero Desactivación Macros.