Eliminar elemento de menu

07/11/2003 - 09:56 por cesar | Informe spam
Estoy intentando que un documento excel añada varios elementos de menú
y que los elimine al cerrarse. Añadirlos es cosa hecha y funcionan
correctamente, pero no consigo que los quite al salir, ni que deje de
duplicarlos al volver a abrir el documento.

Pego mi código (que salió originalmente de este mismo grupo :) en el
que he eliminado todos los elementos menos uno, a ver si veis el
fallo.

Gracias de antemano y un saludo.
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Call EliminarMenúTítulo
End Sub

Private Sub Workbook_Open()

If Facturas.Visible = True Then Exit Sub 'si no existe el el elemento
'Facturas, da un error. Si existe, esta línea no hace lo que espero y
lo duplica :(

Dim MenúAyuda As CommandBarControl
Dim MenúNuevo As CommandBarPopup
Dim ElementoDeMenú As CommandBarButton

'Eliminar el menú, si existe
Call EliminarMenúTítulo

'Localizar el menú Ayuda
Set MenúAyuda = Application.CommandBars(1).FindControl(ID:0010)

If MenúAyuda Is Nothing Then
'Añadir el nuevo menú al final
Set MenúNuevo = CommandBars(1).Controls _
.Add(Type:=msoControlPopup, temporary:=True)
Else
'Añadir el nuevo menú antes de Ayuda
Set MenúNuevo = Application.CommandBars(1).Controls _
.Add(Type:=msoControlPopup, before:=MenúAyuda.Index, _
temporary:=True)
End If

'Añadir un título
MenúNuevo.Caption = "Facturas"

'PRIMER ELEMENTO DE MENÚ
Set ElementoDeMenú = MenúNuevo.Controls.Add _
(Type:=msoControlButton)
ElementoDeMenú.Caption = "Actualizar ficheros"
ElementoDeMenú.OnAction = "Hoja1.ActualizarFicheros"

Set MenúAyuda = Nothing
Set MenúNuevo = Nothing
Set ElementoDeMenú = Nothing

End Sub



Public Sub EliminarMenúTítulo()
'(Este sub deberá ser llamado por el evento BeforeClose del libro)
On Error Resume Next
Application.CommandBars("Facturas").Delete 'no lo borra. Compruebo
que el punto de ejecución si que pasa por esta línea al cerrar el doc,
pero no lo borra.
On Error GoTo 0
End Sub
 

Leer las respuestas

#1 Héctor Miguel
07/11/2003 - 11:16 | Informe spam
Hola, Cesar !

... intentando que ... añada ... elementos de menu y que los elimine al cerrarse...
... no consigo que los quite al salir, ni que deje de duplicarlos al volver a abrir el documento [...]



la 'falla' esta en el procedimiento de 'eliminacion' del menu, debido a que...
el menu NO es eliminado porque... NO 'lo encuentra' :(( la razon [?]...
1.- fue 'creado' como control [msoControlPopUp] de una barra de comandos 'pero' ...
2.- se 'trata' de eliminar como [si fuera] una barra de comandos :((

==> cambia la instruccion de eliminacion en el procedimiento ['EliminarMenúTítulo']
de => CommandBars("Facturas").Delete
a => CommandBars(1).Controls("Facturas").Delete

Saludos,
Héctor.

Preguntas similares