Problema con una macro para generar menús configurables.

02/03/2006 - 08:21 por Luis Cases \(defkon\) | Informe spam
He usado una macro de j-walk, concretamente esta:
http://www.j-walk.com/ss/excel/tips/tip53.htm para crear un menú adaptado a
mi trabajo.

Funciona perfectamente y me permite que las funciones/macros que antes tenía
en botones/campos de lección en otra pestaña, ahora estén al alcance en la
misma pestaña de datos.

Pero... ese menú (que aparece cuando abro el worksheet y se desaparece
cuando lo cierro) también está en todas los libros que se abren en la
sesión, y si alguien ejecuta desde otro libro algún comando de ese menú, da
error porque aplica las macros en el libro que estés.

Supongo que lo debería hacer es que todas las macros que hay grabadas hagan
referencia solo a la libro original en el que fueron grabadas, ¿Como puedo
hacer eso?

Muchas gracias.

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
02/03/2006 - 09:13 | Informe spam
hola, Luis !

Mostrar la cita
dependiendo de que tantos 'cambios/adaptaciones/...' le hubieras hecho al ejemplo que estas utilizando... -?-
[probablemente] una primera alternativa es des/re/habilitar dicho 'menu' en los eventos del libro que lo 'maneja' [p.e.]
en el modulo de codigo del libro [ThisWorkbook] ==Private Sub Workbook_WindowActivate(ByVal Wn As Window)
Application.CommandBars(.).Enabled = True
End Sub
Private Sub Workbook_WindowDeactivate(ByVal Wn As Window)
Application.CommandBars(.).Enabled = False
End Sub

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.
#2 Luis Cases \(defkon\)
02/03/2006 - 13:06 | Informe spam
Gracias Hector, por contestar. Casi es la solución.

He sustituido los .. por 1. y funciona, pero me oculta todos los
menús, no solo el que yo quiero, que es el que he creado, el que en el
ejemplo se llama MyMenu y en mi caso Configuración.

"Héctor Miguel" escribió en el mensaje
news:
Mostrar la cita
#3 Héctor Miguel
02/03/2006 - 18:46 | Informe spam
hola, Luis !

Mostrar la cita
sustituye las instrucciones [en cada evento]...
de -> Application.CommandBars(.).Enabled = True ' o False
a -> Application.CommandBars(1).Controls("Configuración").Enabled = True ' o False
o... Application.CommandBars("Worksheet Menu Bar").Controls("Configuración").Enabled = True ' o False

OJO: para 'el nombre' del control/comando/boton/... que hayas agregado a la barra de menus...
-> usa el mismo texto que le hayas asignado [al crearlo] en la propiedad -> .Caption

saludos,
hector.
#4 Luis Cases \(defkon\)
02/03/2006 - 19:01 | Informe spam
Muchas gracias, Héctor.

La primera forma ya funciona.

Muy agradecido.

"Héctor Miguel" escribió en el mensaje
news:
Mostrar la cita
#5 Luis Cases \(defkon\)
02/03/2006 - 19:16 | Informe spam
Ooops...

Cuando se cierra el libro se produce un error.

La rutina para mostrar el menú tiene una sub para eliminarlo, llamada Sub
DeleteMenu(), que se ejecuta al salir de la hoja mediante:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Call DeleteMenu
End Sub

Entonces al ejecutar:

Private Sub Workbook_WindowDeactivate(ByVal Wn As Window)
Application.CommandBars(1).Controls("Configuración").Enabled = False
End Sub

Pero no existe ya ese control, por lo que se produce el error.

Eliminando Sub DeleteMenu(), se soluciona, aunque el menú "Configuración"
permanece (inactivo) mientras siga abierta la Excel


Saludos.


"Luis Cases (defkon)" escribió en el mensaje
news:
Mostrar la cita
Ads by Google
Search Busqueda sugerida