# Ocultar macros



## Osasas54 (Sep 20, 2002)

Tengo dudas con el siguiente tema, y me gustaría saber si 
lo que persigo es posible.

He creado un libro de excel con unas 15 hojas.
Para no tener que ir desplazandome de hoja a hoja por 
medio de las pestañas
he creado macros para cambiar de hoja, de tal modo que 
sólo pueda haber 1 hoja a la vista.
He creado un boton en cada hoja y le he asignado una macro 
que lo único que hace es mostrar la hoja elegida, y 
ocultar la actúal.

Además, este libro digamos que tiene 2 secciones:
De la página inicial puedes acceder a 3 hojas libremente, 
o al resto mediante una contraseña
que he añadido a tavés de visual de excel.

Bien, después de tenerlo ya acabado necesito saber, si hay 
aguna forma de:

A: Sólo se puedan ejecutar las macros desde los botones 
donde están asignadas.
B: No se pueda acceder al menu ocultar - mostrar hoja.


Saludos, 
Oscar


----------



## Juan Pablo González (Sep 20, 2002)

A.  Poniendo 
<pre>Option Private Module</pre>al principio del módulo donde están los macros.
B.  Se puede proteger el libro seleccionando la estructura, o, desactivando ese menu a través de Viusal Basic.


----------



## Osasas54 (Sep 20, 2002)

perdona, pero como se desactivan los menus através de visual??

He visto como son los eventos en el código  de Acces, pero no veo como hacerlo através del de excel.


----------



## Juan Pablo González (Sep 20, 2002)

Los menus pertenecen a la colleción "CommandBars", donde cada item es una barra.

Cada item de los que vienen incluidos con Excel tiene un ID único, lo que hace más facil su "búsqueda"... por ejemplo, para averiguar el ID del comando "Mostrar..." del submenu hojas hice esto:

<pre>?Application.CommandBars("Worksheet Menu Bar").Controls("Formato").Controls("Hoja").Controls("Mostrar...").Id
 891 </pre> Así, se que este comando lo puedo identificar (Mover, ocultar, deshabilitar, etc.) así:
<pre>Application.CommandBars.FindControl(Id:=891).Enabled=False</pre>


----------



## Osasas54 (Sep 23, 2002)

Hola, me ha venido muy bien lo que me has pasado. Pero necesitaría saber 2 cosillas...

1ª Como puedo vincular ese código:
Application.CommandBars.FindControl(Id:=891).Enabled=False
al inicio y al final del libro, para que se active al arrancar y se desactive al salir del libro.
Lo que he conseguido es meterlo en una macro, pero claro hay que ejecutarla para desactivar el menu, y lo que a mi me interesa es que se active y desactive automaticamente al abrir o cerrar el libro. 
2ª ¿Sería posible volver a ver las macros que hemos hecho desaparecer con: Option Private Module?


----------

