Public Sub PonerMenu() Dim NuevoMenu As Object Dim OpcionMenu As Object Dim MenuHerr As Object ' Busca si el menú ya esta existe Set NuevoMenu = CommandBars.FindControl(Type:=msoControlPopup, Tag:="Utilidades") ' Si no lo encuentra la variable es Nothing If NuevoMenu Is Nothing Then ' Busca el menú Herramientas y devuelve una referencia a el Set MenuHerr = CommandBars.FindControl(ID:=30007) ' La posibilidad de que sea Nothing es remota pero hay que considerarla If Not MenuHerr Is Nothing Then ' Agrega un sunmenú al menú Herramientas Set NuevoMenu = MenuHerr.Controls.Add(Type:=msoControlPopup, Temporary:=True) With NuevoMenu ' Le ponemos Titulo .Caption = "&Utilidades" ' Usamos esta propiedad como utilidad para la busqueda .Tag = "Utilidades" 'Garantizamos que este visible .Visible = True End With Set OpcionMenu = NuevoMenu.Controls.Add(Type:=msoControlButton, _ Temporary:=True) With OpcionMenu .Caption = "Mayusculas" 'Le asignamos la macro que queramos ejecutar .OnAction = "Mayusculas" End With Set OpcionMenu = NuevoMenu.Controls.Add(Type:=msoControlButton, _ Temporary:=True) With OpcionMenu .Caption = "Minusculas" .OnAction = "Minusculas" End With End If End If 'Liberamos la memoria Set MenuHerr = Nothing Set NuevoMenu = Nothing Set OpcionMenu = Nothing End Sub Public Sub QuitarMenu() Dim Menu As Object 'Busca el menu, si lo encuentra lo borra, si no, no hace nada Set Menu = CommandBars.FindControl(Type:=msoControlPopup, Tag:="Utilidades") If Not (Menu Is Nothing) Then Menu.Delete End If End Sub Ahora, para que la macro PonerMenu se ejecute de forma automática al abrir el Complemento y la macro QuitarMenu se ejecute automáticamente al cerrar el Complemento, las "llamamos" desde los eventos Open y BeforeClose del libro, respectivamente... Desde el Editor VBA selecciona el objeto ThisWorkbook Ve al menú Ver | Código o presiona la tecla F7 Copia o escribe el siguiente código. Option Explicit Private Sub Workbook_BeforeClose(Cancel As Boolean) QuitarMenu End Sub Private Sub Workbook_Open() PonerMenu End Sub Espero que te sirva. Te advierto que si tienes perfiles de usuario, la operación en ocasiones es complicada
Que le tengo que borrar para que no me muestre 2 opciones en el menu
Public Sub QuitarMenu() Dim Menu As Object 'Busca el menu, si lo encuentra lo borra, si no, no hace nada Set Menu = CommandBars.FindControl(Type:=msoControlPopup, Caption:="Nombre del Menú") If Not (Menu Is Nothing) Then Menu.Delete End If End Sub