Como saber qual macro é atribuída a um determinado botão da barra de ferramentas no Word 2003

1

Eu tenho uma barra de ferramentas do Word 2003 feita por outra pessoa há muito tempo. A barra de ferramentas contém muitos botões e macros atribuídas.

Até agora, consegui definir pontos de interrupção no código do VBA para descobrir quais macros são executadas, mas, para um botão na minha barra de ferramentas, tenho um problema. Não parece haver qualquer macro correspondente. Quando clico no botão da barra de ferramentas, o Word também diz "A macro não pode ser encontrada ..."). Minha estratégia de encontrar breakpoints não parece um conceito vencedor aqui.

Estou muito ciente disso: menu Ferramentas > Personalizar > Clique com o botão direito do mouse no botão específico da barra de ferramentas:

Infelizmente isso não me ajuda. Posso, de alguma forma, ver as propriedades do evento de retorno de chamada para um determinado botão da barra de ferramentas? Preciso saber qual macro um determinado botão deve executar.

    
por Hauns TM 26.02.2014 / 10:08

1 resposta

1

Imprime todos os nomes de macros atribuídos a qualquer botão de menu

Sub ReadBack_Buttons()
    On Error Resume Next        
    '## Loop through every menu bar
    For Each bar In Application.CommandBars        
        '## Loop through every button on the current menu bar
        For Each button In bar.Controls            
            '## If a macro is assigned, print it out
            If button.OnAction <> "" Then Debug.Print button.Caption & " = " & button.OnAction                
            '## Loop through every button on dropdown menus
            For Each subbutton In button.Controls                
                '## If a macro is assigned, print it out
                If subbutton.OnAction <> "" Then Debug.Print subbutton.Caption & " = " & subbutton.OnAction                    
            Next
        Next
    Next
End Sub

Para um teste rápido, adicione seu próprio menu personalizado com esta segunda macro.

Sub CreateCommandBar()
    On Error Resume Next        
'## Delete the commandbar if it exists
    Application.CommandBars("example").Delete       
'## Create a new Command Bar
    Set bar = CommandBars.Add(Name:="example", Position:=msoBarFloating)
    bar.Visible = True       
'## Add popup menu
    Set menu1 = bar.Controls.Add(Type:=msoControlPopup)
    menu1.Caption = "My custom menu"       
'## Add button 1 to popup menu
    Set Btn2 = menu1.Controls.Add(Type:=msoControlButton)
    Btn2.Caption = "missing macro assigned"
    Btn2.OnAction = "Not_working_dummy"       
'## Add button 2 to popup menu
    Set Btn2 = menu1.Controls.Add(Type:=msoControlButton)
    Btn2.Caption = "Hello World"
    Btn2.OnAction = "Hello_world"        
End Sub

Sub Hello_world()
    MsgBox "Hey, it works"
End Sub

Depois de executar CreateCommandBar , você verá uma nova entrada no menu principal. Um com uma macro de trabalho atribuída e outra sem

Agora, execute a primeira macro ReadBack_Buttons e dê uma olhada no painel imediato

missing macro assigned = Not_working_dummy  
Hello World = Hello_world
    
por 08.03.2014 / 17:45