Wie Sie wissen, welches Makro einer bestimmten Symbolleistenschaltfläche in Word 2003 zugewiesen ist

1786
Hauns TM

Ich habe eine Word 2003-Symbolleiste, die vor langer Zeit von jemand anderem erstellt wurde. Die Symbolleiste enthält viele Schaltflächen und zugewiesene Makros.

Bisher konnte ich im VBA-Code Haltepunkte setzen, um herauszufinden, welche Makros ausgeführt werden. Für eine Schaltfläche in meiner Symbolleiste habe ich jedoch ein Problem. Es scheint kein entsprechendes Makro zu geben. Wenn ich auf die Symbolleistenschaltfläche klicke, sagt Word auch "Das Makro kann nicht gefunden werden ..."). Meine Strategie zur Ermittlung von Haltepunkten scheint hier kein überzeugendes Konzept zu sein.

Ich bin mir dessen sehr bewusst: Menü Extras> Anpassen> Klicken Sie mit der rechten Maustaste auf die Schaltfläche der jeweiligen Symbolleiste:

Menü Extras> Anpassen> Klicken Sie mit der rechten Maustaste auf die Schaltfläche der jeweiligen Symbolleiste

Leider hilft mir das nicht weiter. Kann ich irgendwie Rückrufereignisseigenschaften für eine bestimmte Symbolleistenschaltfläche anzeigen? Ich muss wissen, welches Makro eine bestimmte Schaltfläche ausführen soll.

1

1 Antwort auf die Frage

1
nixda

Gibt alle Makronamen aus, die einer Menütaste zugewiesen sind

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 

Für einen schnellen Test fügen Sie mit diesem zweiten Makro ein eigenes Menü hinzu.

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 

Nach dem Ausführen sehen CreateCommandBarSie einen neuen Eintrag in Ihrem Hauptmenü. Eines mit einem zugewiesenen Arbeitsmakro und eines ohne

enter image description here

Führen Sie nun das erste Makro aus ReadBack_Buttonsund werfen Sie einen Blick auf den unmittelbaren Bereich

missing macro assigned = Not_working_dummy  Hello World = Hello_world 
Hmmm ... Funktioniert diese Methode auch, wenn die Symbolleiste (`CommandBar`) zur Entwurfszeit erstellt wurde? (Ich meine: Mit dem Toolbar Designer Tool in ** Word 2003 **?) Ich habe vollen Zugriff auf den gesamten VBA-Code in der ** Word 2003 ** -Vorlage. Leider gibt es nichts wie `CommandBars (Index) .Controls.xxx` Hauns TM vor 10 Jahren 0
@HaunsTM Oh, ich habe Excel und Word verwechselt. Es wurde behoben und eine bessere Lösung gefunden. Hoffe das hilft nixda vor 10 Jahren 0