Complementos - Añadir un submenú

29/07/2007 - 22:23 por LuisVF | Informe spam
Estoy intentando hacer (copiar) un complemento que encontré en internet. Es
para pasa de mayús a minús

Los procedimientos están bien:

Sub Mayusculas()
Dim c As Range
For Each c In Selection
c.Value = StrConv(c.Value, vbUpperCase)
Next c

End Sub

Sub Minusculas()
Dim c As Range
For Each c In Selection
c.Value = StrConv(c.Value, vbLowerCase)
Next c
End Sub

Pero a la hora de poner un submenú en el menú Herramientas me da un error.
Supongo que era un ejemplo para Excel 2000:

Public Sub PonerMenu()
Dim NuevoMenu As Object
Dim OpcionMenu As Object
Dim MenuHerr As Object
Set NuevoMenu = CommandBars.FindControl(Type:=msoControlPopup,
Tag:="Utilidades")
' If NuevoMenu Is Nothing Then
' Set MenuHerr = CommandBars.FindControl(ID:0007)
' If Not MenuHerr Is Nothing Then
Set NuevoMenu = MenuHerr.Controls.Add(Type:=msoControlPopup)
NuevoMenu.Caption = "&Utilidades"
NuevoMenu.Tag = "Utilidades"
NuevoMenu.Visible = True
' Set OpcionMenu = NuevoMenu.Controls.Add(Type:=msoControlButton)
' OpcionMenu.Caption = "Mayusculas"
' OpcionMenu.OnAction = "Mayusculas"
' Set OpcionMenu = NuevoMenu.Controls.Add(Type:=msoControlButton)
' OpcionMenu.Caption = "Minusculas"
' OpcionMenu.OnAction = "Minusculas"
' End If
' End If
Set MenuHerr = Nothing
Set NuevoMenu = Nothing
Set OpcionMenu = Nothing
End Sub

Public Sub QuitarMenu()
Dim Menu As Object
Set Menu = CommandBars.FindControl(Type:=msoControlPopup,
Tag:="Utilidades")
If Not (Menu Is Nothing) Then
Menu.Delete
End If
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
QuitarMenu
End Sub

Private Sub Workbook_Open()
PonerMenu
End Sub

Me da el error 91, supongo que objeto vacío. No sé muy bien como crear ese
submenú. Ayuda, please :)

Gracias por responder
 

Leer las respuestas

#1 Héctor Miguel
30/07/2007 - 03:38 | Informe spam
hola, Luis !

Estoy intentando hacer (copiar) un complemento que encontré en internet. Es para pasa de mayus a minus
Los procedimientos estan bien: [...]
Pero a la hora de poner un submenu en el menu Herramientas me da un error. Supongo que era un ejemplo para Excel 2000:
Me da el error 91, supongo que objeto vacío. No se muy bien como crear ese submenu. Ayuda, please :)



1) el error se debe a que al momento de no encontrarse ya instaladas tus utilidades...
el codigo *trata* de agregar controles a un objeto NO ESTABLECIDO [en la linea que dice]:
-> Set NuevoMenu = MenuHerr.Controls.Add(Type:=msoControlPopup)

2) este error *obedece* a que el objeto *llamado* [-> MenuHerr <-] no pudo ser establecido :-((
por que ?... porque la linea que establece la referencia al menu herramientas [con el numero de ID:0007]
-> ESTA MARCADA como comentario [observa que tienes varias lineas que se inician con un apostrofo] :-((

3) solucion ?... -> ELIMINA todos los apostrofos en el inicio de las lineas *comentadas* :))

-> otra posibilidad es que estuvieras *tratando* de usar este codigo en la version 2007 -???-
el manejo de los objetos *command* ha pasado al objeto *Ribbon* [la cinta de opciones] y es totalmente diferente -?-

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.

__ el codigo expuesto __
Sub Mayusculas()
Dim c As Range
For Each c In Selection
c.Value = StrConv(c.Value, vbUpperCase)
Next c
End Sub

Sub Minusculas()
Dim c As Range
For Each c In Selection
c.Value = StrConv(c.Value, vbLowerCase)
Next c
End Sub

Public Sub PonerMenu()
Dim NuevoMenu As Object
Dim OpcionMenu As Object
Dim MenuHerr As Object
Set NuevoMenu = CommandBars.FindControl(Type:=msoControlPopup, Tag:="Utilidades")
' If NuevoMenu Is Nothing Then
' Set MenuHerr = CommandBars.FindControl(ID:0007)
' If Not MenuHerr Is Nothing Then
Set NuevoMenu = MenuHerr.Controls.Add(Type:=msoControlPopup)
NuevoMenu.Caption = "&Utilidades"
NuevoMenu.Tag = "Utilidades"
NuevoMenu.Visible = True
' Set OpcionMenu = NuevoMenu.Controls.Add(Type:=msoControlButton)
' OpcionMenu.Caption = "Mayusculas"
' OpcionMenu.OnAction = "Mayusculas"
' Set OpcionMenu = NuevoMenu.Controls.Add(Type:=msoControlButton)
' OpcionMenu.Caption = "Minusculas"
' OpcionMenu.OnAction = "Minusculas"
' End If
' End If
Set MenuHerr = Nothing
Set NuevoMenu = Nothing
Set OpcionMenu = Nothing
End Sub

Public Sub QuitarMenu()
Dim Menu As Object
Set Menu = CommandBars.FindControl(Type:=msoControlPopup, Tag:="Utilidades")
If Not (Menu Is Nothing) Then
Menu.Delete
End If
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
QuitarMenu
End Sub

Private Sub Workbook_Open()
PonerMenu
End Sub

Preguntas similares