Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Criar Menu através do VBA do Excel

193 views
Skip to first unread message

Gleidson.Bardini

unread,
Jul 16, 2007, 12:48:01 PM7/16/07
to
Pessoal,
Estou desenvolvendo um menu através do VBA do excel, na verdade o mesmo está
rodando legal, porém gostaria de inseri-lo no grupo dos Menus:

Arquivo | Editar | Exibir | Inserir | Formatar | Ferramentas | ... | Meu Menu

Alguém sabe como posso fazer isso, criar um novo grupo ou executa-lo como
Menu Popup eu já consegui, mas inseri-lo no grupo do acima não.

Obrigado!

Rodrigo Ferreira

unread,
Jul 17, 2007, 10:18:28 AM7/17/07
to
Gleidson,
Na pasta de trabalho, crie as Subs:

Private Sub Workbook_Activate()
Run "AddMenus"
End Sub

Private Sub Workbook_Deactivate()
Run "DeleteMenu"
End Sub


Em um módulo, crie as funções:

Sub AddMenus()
Dim cMenu1 As CommandBarControl
Dim cbMainMenuBar As CommandBar
Dim iHelpMenu As Integer
Dim cbcCutomMenu As CommandBarControl

'exclui se o menu já existir. Ressume Next caso o menu não exista
On Error Resume Next
Application.CommandBars("Menu Bar").Controls("&Menu Novo").Delete
On Error GoTo 0

Set cbMainMenuBar = _
Application.CommandBars("Menu Bar")

'Obtem o índice do menu de ajuda para poder posicionar o novo menu antes
dele
iHelpMenu = _
cbMainMenuBar.Controls("Ajuda").Index

'Inclui um controle ao "Menu Bar"
Set cbcCutomMenu = _
cbMainMenuBar.Controls.Add(Type:=msoControlPopup, _
Before:=iHelpMenu)

'Coloca descrição do menu
cbcCutomMenu.Caption = "&Menu Novo"

'No novo controle, inclua um sub controle e dê o nome "Manu 1" para ele.
Ele chamará a "Macro1"
With cbcCutomMenu.Controls.Add(Type:=msoControlButton)
.Caption = "Menu 1"
.OnAction = "Macro1"
End With
'inclua outro sub controle e dê o nome "Manu 2" para ele. Ele chamará a
"Macro2"
and tell it which macro to run (OnAction)
With cbcCutomMenu.Controls.Add(Type:=msoControlButton)
.Caption = "Menu 2"
.OnAction = "Macro2"
End With


'Inclui outro item de menu que terá sub-menus
Set cbcCutomMenu = cbcCutomMenu.Controls.Add(Type:=msoControlPopup)
' Nome do menu
cbcCutomMenu.Caption = "Out&ro Menu"

'Inclui um controle ao sub menu com o nome "&Outro Item" e que terá icone
nesse submenu. Ele chamará a Macro2
With cbcCutomMenu.Controls.Add(Type:=msoControlButton)
.Caption = "&Outro Item"
.FaceId = 420
.OnAction = "Macro2"
End With

End Sub

Sub DeleteMenu()
On Error Resume Next
Application.CommandBars("Menu Bar").Controls("&Menu Novo").Delete
On Error GoTo 0
End Sub


Espero ter ajudado

Rodrigo Ferreira


"Gleidson.Bardini" <Gleidso...@discussions.microsoft.com> escreveu na
mensagem news:139D633E-673A-4660...@microsoft.com...

Gleidson.Bardini

unread,
Jul 17, 2007, 10:46:06 AM7/17/07
to
Rodrigo,

Quando ele tenta executar essa linha: iHelpMenu =
cbMainMenuBar.Controls("Ajuda").Index

Aparece a seguinte msg:

***************
Erro em tempo de execução '5'
Argumento ou chamada de procedimentos inválida
***************


"Rodrigo Ferreira" escreveu:

Rodrigo Ferreira

unread,
Jul 17, 2007, 11:08:15 AM7/17/07
to
Seu Excel está em português?
O menu de ajuda do seu excel está escrito "Ajuda" mesmo?
Tente trocar "Ajuda" por "Aj&uda"

Rodrigo Ferreira


"Gleidson.Bardini" <Gleidso...@discussions.microsoft.com> escreveu na
mensagem news:004E7A65-0C5C-4411...@microsoft.com...

Gleidson.Bardini

unread,
Jul 17, 2007, 11:16:07 AM7/17/07
to
Sim esta em português, fiz a alteração de "Ajuda" para "Aj&uda" mas aparece a
mesma msg. No seu ele executa essa linha? Caso sim, qual o valor que ele
retorna?

"Rodrigo Ferreira" escreveu:

Rodrigo Ferreira

unread,
Jul 17, 2007, 7:39:09 PM7/17/07
to
Executa normalmente.
Retorna o número 10

Rodrigo Ferreira


"Gleidson.Bardini" <Gleidso...@discussions.microsoft.com> escreveu na
mensagem news:B207509E-6F4A-470F...@microsoft.com...

Gleidson.Bardini

unread,
Jul 18, 2007, 8:36:02 AM7/18/07
to
Rodrigo muito obrigado pela força, mas acabei fazendo de outra forma e
funcionou até melhor, além de o código ter ficado muito mais enxuto.

"Rodrigo Ferreira" escreveu:

0 new messages