
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Call DeleteFromCellMenu
End Sub
Sub AddToCellMenu()
Dim ContextMenu As CommandBar
Dim MySubMenu As CommandBarControl
'**************esto se ejecuta si no hace la funcion de before close********************
'Eliminar los controles de primera para evitar duplicados.
'Llama a DeleteFromCellMenu
'**************esto se ejecuta si no hace la funcion de before close********************
'Establecer ContextMenu al menú contextual de la célda.
Set ContextMenu = Application.CommandBars("Cell")
'Añadir un botón integrado (guardar = 3) en el menú contextual de la célda.
ContextMenu.Controls.Add Type:=msoControlButton, ID:=3, before:=2
'Añadir un botón personalizado en el menú contextual de la célda.
With ContextMenu.Controls.Add(Type:=msoControlButton, before:=1)
.OnAction = "ChooseSheet" '''' asi se llama la macro va y busca la rutina
.FaceId = 516
.Caption = "Ubicación Hoja"
.Tag = "My_Cell_Control_Tag"
End With
End Sub
Sub DeleteFromCellMenu()
Dim ContextMenu As CommandBar
Dim ctrl As CommandBarControl
'Establecer ContextMenu al menú contextual de la célda.
Set ContextMenu = Application.CommandBars("Cell")
'Eliminar los controles personalizados con el tag: My_Cell_Control_Tag.
For Each ctrl In ContextMenu.Controls
If ctrl.Tag = "My_Cell_Control_Tag" Then
ctrl.Delete
End If
Next ctrl
'Eliminar la costumbre incorporada en el botón Guardar.
On Error Resume Next
ContextMenu.FindControl(ID:=3).Delete
On Error GoTo 0
End Sub
Private Sub Workbook_Open()
Call AddToCellMenu
End Sub
