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

Preguntas similare

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.
Respuesta Responder a este mensaje
#2 cesar
07/11/2003 - 16:32 | Informe spam
"Héctor Miguel" wrote in message news:<#...

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.



Hola Héctor,

en mi mensaje anterior no me di cuenta de esto. Originalmente la
función era:

Public Sub EliminarMenúTítulo()
'(Este sub deberá ser llamado por el evento BeforeClose del libro)
On Error Resume Next
CommandBars(1).Controls("Facturas").Delete
On Error GoTo 0
End Sub

y como no funcionaba y antes de preguntar estuve probando diferentes
opciones que iba encontrando aqui y allá, la modifiqué y no me di
cuenta de deshacer antes de publicar el post. No me funciona de
ninguna de las dos maneras.

Utilizo Excel 2000 en windows 2000 Pro, por si tuviera algo que ver.
Todos los mensajes que veo en microsoft.public.* sobre el tema, me
indican que *debe* funcionar, pero no lo consigo :(
Respuesta Responder a este mensaje
#3 cesar
07/11/2003 - 18:06 | Informe spam
Bueno, creo que algo he descubierto. El código que me sugieres, que es
el primero que usaba, sí que borra el elemento de menú, pero sólo
cuando cierro EXCEL. No lo borra si cierro el libro pero dejo excel
abierto. Así que supongo que el problema es buscar otro evento más
apropiado.

Además, si intento cerrar excel borra el menú aunque finalmente me
eche atrás y pulse "Cancelar" en el diálogo que me pregunta si quiero
guardar los cambios. Ya se que soy un poco tiquismiquis, pero si se
puede hacer mejor, me gustaría saberlo :)
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida