Saltar al contenido

Añadir la lista de macros al menú contextual


Antoni

Recommended Posts

publicado

Hola:

Como parece que mi último aporte no os ha impresionado lo mas mínimo, con este os voy a deja con la boca abierta y las mandíbulas desencajadas.

Se trata de una macro que incorpora la lista de macros disponible en el menú contextual (Click derecho).

En un módulo normal, añadir:

'
' Macro para añadir la lista de macros en el menú contextual
' '---------------------------------------------------------
'
Sub AñadirMenuContextual()

'Restablecemos el menú contextual
'--------------------------------
RestaurarMenuContextual

'Añadimos Label "Lista de Macros" al menú contextual
'---------------------------------------------------
Set cmdNew = CommandBars("cell").Controls.Add
With cmdNew
.BeginGroup = True
.Caption = "*** Lista de macros ***"
End With

Icono = 71

'Por cada componente del proyecto
'--------------------------------
For i = 1 To ActiveWorkbook.VBProject.VBComponents.Count

'Por cada módulo
'---------------
If ActiveWorkbook.VBProject.VBComponents.Item(i).Type = 1 Then
Set VBComp = ActiveWorkbook.VBProject.VBComponents.Item(i)
With VBComp.CodeModule

'Recorremos el código VBA
'------------------------
For N = 1 To .CountOfLines
If (Left(Trim(.Lines(N, 1)), 3) = "Sub" Or _
Left(Trim(.Lines(N, 1)), 9) = "Public Sub") And _
Right(Trim(.Lines(N, 1)), 2) = "()" Then

'Obtenemos el nombre de la macro
'-------------------------------
Macro = Trim(.Lines(N, 1))
Macro = Replace(Macro, "Public ", "")
Macro = Replace(Macro, "Sub ", "")
Macro = Replace(Macro, "()", "")

'Añadimos el menú con la macro
'-----------------------------
If Macro <> "AñadirMenuContextual" And _
Macro <> "RestaurarMenuContextual" Then
Set cmdNew = CommandBars("cell").Controls.Add
With cmdNew
.Caption = Macro
.FaceId = Icono
.OnAction = Macro
End With
Icono = Icono + 1
End If
End If
Next N
End With
End If
Next i
End Sub

Sub RestaurarMenuContextual()
'Restablecemos el menú contextual
'--------------------------------
CommandBars("Cell").Reset
End Sub[/CODE]

En [b]ThisWorkBook[/b]:

[CODE]
Private Sub Workbook_Open()
AñadirMenuContextual
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
RestaurarMenuContextual
End Sub

[/CODE]

Si os gusta, lo automatizaré.

Salu2. "Macro" Antonio, ... me voy que Julio Cesar me está esperando y tenemos que discutir que hacemos con la "Cleo".

publicado

Hola Antoni!

He mirado el codigo y me parece bastante interesante, efectivamente me sale en el menu la lista de macros, pero me suelta un error y el boton no hace nada, el error sucede al abrir el libro y dice asi:

Se ha producido el error '1004' en tiempo de ejecucion:

El acceso mediante programacion al proyecto de Visual Basic no es de confianza.

En depuracion señala la siguiente linea:

For i = 1 To ActiveWorkbook.VBProject.VBComponents.Count[/CODE]

Quiza sea que necesito agregar algun componente, si me pudieras decir que necesito. Actualmente uso 2003 y nivel de seguridad en Bajo.

Saludos y me alegra verte de nuevo :rolleyes:

publicado

Hola:

¡¡ Hombre cuanto tiempo !!, pensé, a este le a tocado la "primi" y se ha ido al Caribe a buscar a "Curro"....ja,ja,ja

Volviendo al tema, es algo referente a seguridad, pero gracias a ti ya no uso Excel 2003, con lo que no te puedo decir nada al respecto.

Hay una opción, "Confiar en proyectos de Visual Basic si/no", pero no recuerdo donde.

Esperemos a ver si alguien mas lo prueba y nos da una pista.

Pásate a 2007, y abandona 2003 de una vez.

Yo llevo ya un par de meses con 2007 y salvo las "chorraditas" iniciales, no tengo el mas mínimo problema. Eso si, desinstalé 2003 porque tenía problemas con Outlook.

Un placer verte de nuevo por aquí.

Un saludo. Antoni.

publicado

Buenas en Excel 2003 se debe de ir a Herramientas, Macros, Seguridad y hay marcar la casilla Confiar en proyectos de Visual Basic en 2007 es ficha Programador, Seguridad ,marcar Confiar en proyectos de Visual Basic

un saludo

publicado

Saludos a todos.

Macro Antonio, muy buen codigo, mi unica duda es si al marcar la casilla Confiar en proyectos de Visual Basic, no se deja vulnerable la seguridad.

Atte.

joshua

publicado

1.-excelente ejemplo :) 'Macro' Antonio

si te animas algo interesante seria un menu contextual rebelde (si uno que simule el menu contextual ,pero que haga todo a la inversa o como se le pegue la gana al 'programador'...seria una especie de 'broma')

haaaa saludo a la bella 'Cleo'

2.-tambien la aclaracion de logroastur

3.-otros y joshua el requisito previo es 'la confianza' en el proyecto,de otra manera no ejecutar

para el caso que no ocupa se tendrá que desactivar la casilla para evitar la vulnerabilidad

aunque entiendo que joshua no pregunta si no afirma 'preguntando' :)

publicado
Hola:

¡¡ Hombre cuanto tiempo !!, pensé, a este le a tocado la "primi" y se ha ido al Caribe a buscar a "Curro"....ja,ja,ja

Volviendo al tema, es algo referente a seguridad, pero gracias a ti ya no uso Excel 2003, con lo que no te puedo decir nada al respecto.

Hay una opción, "Confiar en proyectos de Visual Basic si/no", pero no recuerdo donde.

Esperemos a ver si alguien mas lo prueba y nos da una pista.

Pásate a 2007, y abandona 2003 de una vez.

Yo llevo ya un par de meses con 2007 y salvo las "chorraditas" iniciales, no tengo el mas mínimo problema. Eso si, desinstalé 2003 porque tenía problemas con Outlook.

Un placer verte de nuevo por aquí.

Un saludo. Antoni.

La verda que si que hace tiempo, ojala me hubiera tocado la primi jeje, no hubo suerte :P

Lo del 2007 voy a darte la razon, deberia empezar a usarlo mas y mas, por que de hecho en el modulo de informatica que estoy haciendo ahora mismo tienen justamente esta version, asi que en vez de odiarla intentare aprender y cogerle el trukis.

Gracias por la info, ahora ya si que me funciona la macro, esta muy currada tio ++1 ;)

A ver si saco mas tiempo para volver a dedicarme aun que sea un poco a esta pagina que ultimamente estoy inhundado de trabajos.

Saludos!!

  • 2 months later...
publicado

Hola:

En el propio aporte, está la forma de hacerlo:

Sub RestaurarMenuContextual()
'Restablecemos el menú contextual
'--------------------------------
CommandBars("Cell").Reset
End Sub[/CODE]

Saludos.

  • 1 year later...
publicado

Estimado MARCO ANTONIO, estoy seguro que es una macro genial, sin embargo no he podido lograr ver seu funcionamiento, tenco oficce 2010, ser por eso (lo de la seguridad de las macros lo tengo todo habilitado)

Que sera que estoy haciendo mal, luego de ejecutar la macro hago clic derecho sobre la hoja de trabajo pero no visualizo la lista de las macros que tengo en el libro,..

un saludo

  • 4 weeks later...
publicado

Como hace poco soy miembro del foro, recién lo veo... y no puedo dejar de felicitarte! (estoy buscando el emoticon de aplauso, pero no hay)

No veo la hora de encontrar la planilla adecuada para utilizar este GRAN código.

Muchas gracias.

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.