Criar um boto na barra de ferramentas para chamar suas
macrosPorReinaldo CoralOi 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
defazeruma 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 experinciamelhore
mais semelhante ao que j est acostumado.
Isto so barras de ferramentas...Bom, pra comear, vamos definir o
que precisaremos neste projeto.Criar ummdulopara 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 CommandBarDim cmdButton As
CommandBarButtonDim 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 objCBsDim objMyCBDim objButtonDim i
Set objCBs = Item.GetInspector.CommandBarsSet objMyCB =
objCBs.Add("Icons")objMyCB.Visible = TrueFor i = 0 to 500Set
objButton = objMYCB.Controls.AddobjButton.Style =
3objButton.Caption = iobjButton.FaceID = iobjButton.Visible =
TrueNextEnd Function