Você está na página 1de 13

Criar um boto na barra de ferramentas

para chamar suas macros


Por Reinaldo Coral
Oi pessoal.
Hoje mostraremos com dar um ar profissional aos seus projetos de macros.
Geralmente construmos nossas macros (rotinas VBA) e chamamos atravs de
atalhos, botes de comando ou at mesmo eventos da planilha ou pasta de
trabalho.
Enfim, quero mostrar neste artigo, outra maneira bem interessante
de fazer uma chamada macro com uma aparncia limpa e amigvel ao
usurio.
Vamos criar nossa prpria barra de ferramentas ao estilo do prprio Excel.
Dessa maneira, o usurio pode ter uma experincia melhor e mais semelhante
ao que j est acostumado.

Isto so barras de ferramentas...


Bom, pra comear, vamos definir o que precisaremos neste projeto.
Criar um mdulo para construir nossa macro e nossa barra de ferramentas;
Definir os eventos Open e Before_Close da pasta de trabalho para iniciar e
eliminar a barra de ferramentas, respectivamente.
Abra o VBA Project (ALT+F11).
Duplo clique em EstaPasta_de_trabalho.
Escreva o cdigo abaixo:

Private Sub Workbook_Open()


On Error Resume Next
'Cria a Barra de ferramentas personalizada
Call CriarMenus
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
On Error Resume Next
'Exclui a Barra de ferramentas personalizada
Call DeletarMenu
End Sub

Quando os eventos Abrir e Fechar da pasta de trabalho so invocados, a barra


de ferramentas criada ou excluda, respectivamente.
Agora podemos criar os procedimentos que criaro sua CommandBar e tambm
criar as macros que sero chamadas por cada boto desta barra. Para isso,
inclua um Mdulo ao projeto e digite o cdigo a seguir.

Public Const CMDBARNOME As String = "Minha CommandBar"


Public Const BTN_MACRO_1 As String = "Executar MACRO 1"
Public Const BTN_MACRO_2 As String = "Executar MACRO 2"
Public Sub CriarMenus()
Dim cmdbar
As CommandBar
Dim cmdButton
As CommandBarButton
Dim menu
As CommandBarPopup
On Error Resume Next
'Exclui a barra caso j exista
Call DeletarMenu
'Adiciona a barra de ferramentas
Set cmdbar = CommandBars.Add(CMDBARNOME, msoBarFloating)
'Limpa a barra de Ferramentas
With cmdbar
.Controls(BTN_MACRO_1).Delete
.Controls(BTN_MACRO_2).Delete
.Visible = True
End With
'Adiciona os botes
Set cmdButton = cmdbar.Controls.Add(Type:=msoControlButton)
With cmdButton
.Caption = BTN_MACRO_1
'Define o ttulo do
boto
.Style = msoButtonCaption
'Apenas exibe Ttulo
.OnAction = "Macro1"
'Macro a ser executada
.Visible = True
'Boto estar visvel?
.Width = 150
'Tamanho do boto
End With
Set cmdButton = cmdbar.Controls.Add(Type:=msoControlButton)
With cmdButton
.Caption = BTN_MACRO_2
'Define o ttulo do
boto
.Style = msoButtonIconAndCaption
'Exibe cone e Ttulo
.FaceId = 59
'Id do cone
.OnAction = "Macro2"
'Macro a ser executada
.Visible = True
'Boto estar visvel?
.Width = 150
'Tamanho do boto
End With
End Sub
Public Sub DeletarMenu()
On Error Resume Next

Application.CommandBars(CMDBARNOME).Delete
End Sub
Sub Macro1()
'Essa Macro ser chamada ao clicar no primeiro boto da barra de
ferramentas
MsgBox "Ei... eu sou a Macro 1...", vbInformation
End Sub
Sub Macro2()
'Essa Macro ser chamada ao clicar no segundo boto da barra de
ferramentas
MsgBox "Agora a Macro 2, ok...", vbInformation
End Sub

As Macro1 e Macro2 so exemplos das macros que voc poder criar para o seu
programa. Elas sero executadas ao clicar em alguns dos botes da sua barra
de Ferramentas.

Sua barra de Ferramentas Personalizada

Voc pode ter notado que o segundo boto tm um cone. Este cone definido
na propriedade FaceId.

Tabelinhas com os Ids destes cones.

Option Explicit
Function Item_Open()
Dim objCBs
Dim objMyCB
Dim objButton
Dim i
Set objCBs = Item.GetInspector.CommandBars
Set objMyCB = objCBs.Add("Icons")
objMyCB.Visible = True
For i = 0 to 500
Set objButton = objMYCB.Controls.Add
objButton.Style = 3
objButton.Caption = i
objButton.FaceID = i
objButton.Visible = True
Next
End Function

Você também pode gostar