Objeto CommandBar no encontrado

14/09/2006 - 22:14 por Juan Carlos Perez | Informe spam
Estoy tratando de hacer una macro para insertar una barra de menús
personalizada en una de mis aplicaciones. No obstante, cuando hago pruebas
con un libro en blanco, sí me funciona, pero cuando traslado la macro a un
módulo de mi aplicación, VBA no reconoce el objeto CommandBar al hacer la
declaración de la variable, incluso abriendo mi aplicación y el libro nuevo
en la misma instancia de Excel.

Si alguien sabe el motivo, le agradecería me informase.

Saludos

Juan Carlos Perez
Asturias - España

Seguidamente detallo la macro en cuestión:

Sub Crear_Barra_de_Menu_Alfagestión()

Dim My_Menu As CommandBar, newControl, newItem, subMenu

'remove custom menu if it exists
On Error Resume Next
CommandBars("Alfagestión").Delete
On Error GoTo 0

'create new menu and display
Set My_Menu = CommandBars.Add(Name:="Alfagestión", _
Position:=msoBarTop, _
MenuBar:=False)
My_Menu.Visible = True

'add a menu to the new CommandBar
Set newControl1 = My_Menu.Controls.Add(Type:=msoControlPopup)
Set newControl2 = My_Menu.Controls.Add(Type:=msoControlPopup)
Set newControl3 = My_Menu.Controls.Add(Type:=msoControlPopup)
Set newControl4 = My_Menu.Controls.Add(Type:=msoControlPopup)
Set newControl5 = My_Menu.Controls.Add(Type:=msoControlPopup)
Set newControl6 = My_Menu.Controls.Add(Type:=msoControlPopup)
Set newControl7 = My_Menu.Controls.Add(Type:=msoControlPopup)
Set newControl8 = My_Menu.Controls.Add(Type:=msoControlPopup)
Set newControl9 = My_Menu.Controls.Add(Type:=msoControlPopup)
Set newControl10 = My_Menu.Controls.Add(Type:=msoControlPopup)
newControl1.Caption = "Alfagestión "
newControl2.Caption = "Certificados "
newControl3.Caption = "Presupuestos "
newControl4.Caption = "Ir a . . . . "
newControl5.Caption = "Modificar "
newControl6.Caption = "Listar "
newControl7.Caption = "Otras Aplicaciones "
newControl8.Caption = "Mant. BD "
newControl9.Caption = "Agenda "
newControl9.Caption = "Varios "

'add a menu item to the new menu
With newControl1
Set newItem = .Controls.Add(Type:=msoControlButton)
'Set subMenu = .Controls.Add(Type:=msoControlPopup)
End With
With newItem
.Caption = "Actualizar"
.OnAction = "Actualizando"
End With
With newControl1
Set newItem = .Controls.Add(Type:=msoControlButton)
'Set subMenu = .Controls.Add(Type:=msoControlPopup)
End With
With newItem
.Caption = "Guardar"
.OnAction = "Guardando"
End With
With newControl1
Set newItem = .Controls.Add(Type:=msoControlButton)
'Set subMenu = .Controls.Add(Type:=msoControlPopup)
End With
With newItem
.Caption = "Cerrar"
.OnAction = "Cerrando"
End With


'Crear items del menú Certificados
With newControl2
Set newItem = .Controls.Add(Type:=msoControlButton)
'Set subMenu = .Controls.Add(Type:=msoControlPopup)
End With
With newItem
.Caption = "Saldos Todas Cuentas"
.OnAction = "" 'nombre de la macro que se ejecutará
End With
With newControl2
Set newItem = .Controls.Add(Type:=msoControlButton)
'Set subMenu = .Controls.Add(Type:=msoControlPopup)
End With
With newItem
.Caption = "Saldos Imp. Sucesiones"
.OnAction = "" 'nombre de la macro que se ejecutará
End With
With newControl2
Set newItem = .Controls.Add(Type:=msoControlButton)
'Set subMenu = .Controls.Add(Type:=msoControlPopup)
End With
With newItem
.Caption = "Capacidad Económica"
.OnAction = "" 'nombre de la macro que se ejecutará
End With
With newControl2
Set newItem = .Controls.Add(Type:=msoControlButton)
'Set subMenu = .Controls.Add(Type:=msoControlPopup)
End With
With newItem
.Caption = "de Deuda"
.OnAction = "" 'nombre de la macro que se ejecutará
End With
With newControl2
Set newItem = .Controls.Add(Type:=msoControlButton)
'Set subMenu = .Controls.Add(Type:=msoControlPopup)
End With
With newItem
.Caption = "Pensión"
.OnAction = "" 'nombre de la macro que se ejecutará
End With
With newControl2
Set newItem = .Controls.Add(Type:=msoControlButton)
'Set subMenu = .Controls.Add(Type:=msoControlPopup)
End With
With newItem
.Caption = "Pago Cuotas Seg. Social"
.OnAction = "" 'nombre de la macro que se ejecutará
End With

Exit Sub

'add a sub menu to the new menu and add items to it
With subMenu
.Caption = "Additional Choices"
Set newItem = .Controls.Add(Type:=msoControlButton)
newItem.Caption = "Check On Fishing"
newItem.OnAction = "FishingStatus"
Set newItem = _
.Controls.Add(Type:=msoControlButton)
newItem.Caption = "Check On Golfing"
newItem.OnAction = "GolfingStatus"
End With

'add a menu item that will restore the original menus
Set newItem = newControl1.Controls.Add(Type:=msoControlButton)
With newItem
.Caption = "Ocultar Barra Alfagestión"
.OnAction = "Ocultar_Barra_Alfagestión"
'This next statement adds a separator bar
.BeginGroup = True
End With

'add a menu to the new CommandBar
' Set newControl = _
' My_Menu.Controls.Add(Type:=msoControlPopup)
' newControl.Caption = "Menu2"
' Set newItem = _
' newControl.Controls.Add(Type:=msoControlButton)
' With newItem
' .Caption = "Say Goodbye"
' .OnAction = "SayGoodbye"
' End With
End Sub

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
15/09/2006 - 06:24 | Informe spam
hola, Juan Carlos !

... tratando de hacer una macro para insertar una barra de menus personalizada en una de mis aplicaciones.
... cuando hago pruebas con un libro en blanco, si me funciona, pero cuando traslado la macro a un modulo de mi aplicacion
VBA no reconoce el objeto CommandBar al hacer la declaracion de la variable
incluso abriendo mi aplicacion y el libro nuevo en la misma instancia de Excel [...]



1) en algunas ocasiones es necesario 'calificar/emparentar/...' completamente las variables con su objeto 'Parent'
[segun versiones, parches, actualizaciones, formas de uso, y algunos otros 'detalles']
-> prueba con Dim My_Menu As Application.CommandBar
igual para: Application.CommandBars("nombre de la barra").

2) otra alternativa, que incluso podria ahorrarte unas cuantas lineas de codigo de la 'generacion al vuelo' de tus barras personalzadas...
a) crea/arregla/acomoda/asigna macros/... a tu barra y sus controles [segun sea necesario] -> en la interfase grafica de la aplicacion
b) adjunta la/s barra/s a tu libro...
1) [menu] herramientas / personalizar / [ficha] barras de herramientas
2) selecciona tu/s barra/s y pulsas el boton: adjuntar...
c) usa el evento '_beforeclose' de tu libro para eliminarla del ambiente de otras pc's
Application.CommandBars("mi barra persolan").Delete

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.
Respuesta Responder a este mensaje
#2 Gabriel Raigosa
30/09/2006 - 22:11 | Informe spam
Carpeta
Descripción
Dirección

1
** Microsoft Excel *
http://esnips.com/web/GabrielRaigosa

2
Archivos para usar en clase
http://esnips.com/web/RaigosaClase

3
Fechas y Horas
http://esnips.com/web/RaigosaFechasHoras

4
Formato y Formato Condicional
http://esnips.com/web/RaigosaFormatos

5
Foro Excel
http://esnips.com/web/ForoExcel

6
Funciones de Busqueda
http://esnips.com/web/RaigosaBusqueda

7
Funciones de Texto
http://esnips.com/web/RaigosaTexto

8
Funciones Financieras
http://esnips.com/web/RaigosaFinancieras

9
Funciones Logicas
http://esnips.com/web/RaigosaLogicas

10
Graficos con Excel
http://esnips.com/web/RaigosaGraficos

11
Grupo (Sabados)
Privado

12
Grupo (Viernes)
Privado

13
Grupo Excel Septiembre
Privado

14
Juegos con Excel
http://esnips.com/web/RaigosaJuegosExcel

15
Macros con Excel
http://esnips.com/web/Macros-con-Excel

16
Manuales Excel
http://esnips.com/web/RaigosaManuales

17
Paginas WEB
http://esnips.com/web/RaigosaPaginasExcel

18
Practicas - XLS
http://esnips.com/web/RaigosaPracticasXLS

19
Tablas Dinámicas
http://esnips.com/web/RaigosaTablasDinamicas

20
TEST
http://esnips.com/web/GabrielRaigosa-test

21
Validación
http://esnips.com/web/RaigosaValidacion

22
Varios
http://esnips.com/web/RaigosaVarios

23
VBA - Visual Basic para Aplicaciones
http://esnips.com/web/RaigosaVBA














Gabriel Raigosa
http://esnips.com/web/Raigosa
http://esnips.com/web/ForoExcel
"Juan Carlos Perez" escribió en el mensaje
news:
| Estoy tratando de hacer una macro para insertar una barra de menús
| personalizada en una de mis aplicaciones. No obstante, cuando hago
pruebas
| con un libro en blanco, sí me funciona, pero cuando traslado la macro a un
| módulo de mi aplicación, VBA no reconoce el objeto CommandBar al hacer la
| declaración de la variable, incluso abriendo mi aplicación y el libro
nuevo
| en la misma instancia de Excel.
|
| Si alguien sabe el motivo, le agradecería me informase.
|
| Saludos
|
| Juan Carlos Perez
| Asturias - España
|
| Seguidamente detallo la macro en cuestión:
|
| Sub Crear_Barra_de_Menu_Alfagestión()
|
| Dim My_Menu As CommandBar, newControl, newItem, subMenu
|
| 'remove custom menu if it exists
| On Error Resume Next
| CommandBars("Alfagestión").Delete
| On Error GoTo 0
|
| 'create new menu and display
| Set My_Menu = CommandBars.Add(Name:="Alfagestión", _
| Position:=msoBarTop, _
| MenuBar:=False)
| My_Menu.Visible = True
|
| 'add a menu to the new CommandBar
| Set newControl1 = My_Menu.Controls.Add(Type:=msoControlPopup)
| Set newControl2 = My_Menu.Controls.Add(Type:=msoControlPopup)
| Set newControl3 = My_Menu.Controls.Add(Type:=msoControlPopup)
| Set newControl4 = My_Menu.Controls.Add(Type:=msoControlPopup)
| Set newControl5 = My_Menu.Controls.Add(Type:=msoControlPopup)
| Set newControl6 = My_Menu.Controls.Add(Type:=msoControlPopup)
| Set newControl7 = My_Menu.Controls.Add(Type:=msoControlPopup)
| Set newControl8 = My_Menu.Controls.Add(Type:=msoControlPopup)
| Set newControl9 = My_Menu.Controls.Add(Type:=msoControlPopup)
| Set newControl10 = My_Menu.Controls.Add(Type:=msoControlPopup)
| newControl1.Caption = "Alfagestión "
| newControl2.Caption = "Certificados "
| newControl3.Caption = "Presupuestos "
| newControl4.Caption = "Ir a . . . . "
| newControl5.Caption = "Modificar "
| newControl6.Caption = "Listar "
| newControl7.Caption = "Otras Aplicaciones "
| newControl8.Caption = "Mant. BD "
| newControl9.Caption = "Agenda "
| newControl9.Caption = "Varios "
|
| 'add a menu item to the new menu
| With newControl1
| Set newItem = .Controls.Add(Type:=msoControlButton)
| 'Set subMenu = .Controls.Add(Type:=msoControlPopup)
| End With
| With newItem
| .Caption = "Actualizar"
| .OnAction = "Actualizando"
| End With
| With newControl1
| Set newItem = .Controls.Add(Type:=msoControlButton)
| 'Set subMenu = .Controls.Add(Type:=msoControlPopup)
| End With
| With newItem
| .Caption = "Guardar"
| .OnAction = "Guardando"
| End With
| With newControl1
| Set newItem = .Controls.Add(Type:=msoControlButton)
| 'Set subMenu = .Controls.Add(Type:=msoControlPopup)
| End With
| With newItem
| .Caption = "Cerrar"
| .OnAction = "Cerrando"
| End With
|
|
| 'Crear items del menú Certificados
| With newControl2
| Set newItem = .Controls.Add(Type:=msoControlButton)
| 'Set subMenu = .Controls.Add(Type:=msoControlPopup)
| End With
| With newItem
| .Caption = "Saldos Todas Cuentas"
| .OnAction = "" 'nombre de la macro que se ejecutará
| End With
| With newControl2
| Set newItem = .Controls.Add(Type:=msoControlButton)
| 'Set subMenu = .Controls.Add(Type:=msoControlPopup)
| End With
| With newItem
| .Caption = "Saldos Imp. Sucesiones"
| .OnAction = "" 'nombre de la macro que se ejecutará
| End With
| With newControl2
| Set newItem = .Controls.Add(Type:=msoControlButton)
| 'Set subMenu = .Controls.Add(Type:=msoControlPopup)
| End With
| With newItem
| .Caption = "Capacidad Económica"
| .OnAction = "" 'nombre de la macro que se ejecutará
| End With
| With newControl2
| Set newItem = .Controls.Add(Type:=msoControlButton)
| 'Set subMenu = .Controls.Add(Type:=msoControlPopup)
| End With
| With newItem
| .Caption = "de Deuda"
| .OnAction = "" 'nombre de la macro que se ejecutará
| End With
| With newControl2
| Set newItem = .Controls.Add(Type:=msoControlButton)
| 'Set subMenu = .Controls.Add(Type:=msoControlPopup)
| End With
| With newItem
| .Caption = "Pensión"
| .OnAction = "" 'nombre de la macro que se ejecutará
| End With
| With newControl2
| Set newItem = .Controls.Add(Type:=msoControlButton)
| 'Set subMenu = .Controls.Add(Type:=msoControlPopup)
| End With
| With newItem
| .Caption = "Pago Cuotas Seg. Social"
| .OnAction = "" 'nombre de la macro que se ejecutará
| End With
|
| Exit Sub
|
| 'add a sub menu to the new menu and add items to it
| With subMenu
| .Caption = "Additional Choices"
| Set newItem = .Controls.Add(Type:=msoControlButton)
| newItem.Caption = "Check On Fishing"
| newItem.OnAction = "FishingStatus"
| Set newItem = _
| .Controls.Add(Type:=msoControlButton)
| newItem.Caption = "Check On Golfing"
| newItem.OnAction = "GolfingStatus"
| End With
|
| 'add a menu item that will restore the original menus
| Set newItem = newControl1.Controls.Add(Type:=msoControlButton)
| With newItem
| .Caption = "Ocultar Barra Alfagestión"
| .OnAction = "Ocultar_Barra_Alfagestión"
| 'This next statement adds a separator bar
| .BeginGroup = True
| End With
|
| 'add a menu to the new CommandBar
| ' Set newControl = _
| ' My_Menu.Controls.Add(Type:=msoControlPopup)
| ' newControl.Caption = "Menu2"
| ' Set newItem = _
| ' newControl.Controls.Add(Type:=msoControlButton)
| ' With newItem
| ' .Caption = "Say Goodbye"
| ' .OnAction = "SayGoodbye"
| ' End With
| End Sub
|
|
|
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida