Startbutton in der Schnellstartleiste

.. das wohl mächtigste Werkzeug in Bill Gates' Büro-Sippe. Ob reine Formeln, PowerQuery oder VBA. Hier bleiben kaum Wünsche unerfüllt.
Benutzeravatar
theos
Beiträge: 59
Registriert: 15. Sep 2022, 21:48
Hat sich bedankt: 5 Mal
Danksagung erhalten: 31 Mal
Kontaktdaten:

Startbutton in der Schnellstartleiste

#1

Beitrag von theos »

Hallo.
Muss auch mal eine Frage stellen.
Verwende gerne in der Schnellstartleiste einen Knopf, den ich in bestimmten Mappen mit einem Makro belegt hab, um den damit zu starten.
So weit so einfach.
Jetzt möchte ich das Einfügen des Knopfes und zuordnen des Makros mit einem Makro machen.
Weiß jemand wie ich das lösen kann?
Danke.
Paul1206
Beiträge: 35
Registriert: 29. Aug 2022, 20:22
Hat sich bedankt: 5 Mal
Danksagung erhalten: 14 Mal

Re: Startbutton in der Schnellstartleiste

#2

Beitrag von Paul1206 »

Hallo,

wenn ich es richtig verstanden habe, suchst du nach einer Prozedur, welche im Ribbon einen Button erzeugt und diesem Button eine Prozedur zuweist.
Meines Wissens kann VBA nicht ins Ribbon schreiben, sondern nur via Public oder falls stabiler per Property Anweisung diverse Variablen, welche für XML reserviert sind zurückgeben.
Was in alten Office Versionen vor Einführung XML ging wird dann nur noch, wenn ich mich recht erinnere, unter dem Tab „AddIn“ angezeigt und ist da auch funktional.
Das was du möchtest sollte nur noch von außen via XML Editor o.ä. (geht auch für den Notfall gezippt händisch) möglich sein. Da kann man dann relativ viel damit erschlagen. Aber selbst da gibt es diverse Einschränkungen in der Gestaltung.

Gruß Uwe
Benutzeravatar
d'r Bastler
Beiträge: 884
Registriert: 29. Aug 2022, 13:20
Hat sich bedankt: 241 Mal
Danksagung erhalten: 127 Mal

Re: Startbutton in der Schnellstartleiste

#3

Beitrag von d'r Bastler »

Moin theos,

nach einiger neugieriger Recherche und ein paar Tests komme ich zum gleichen Ergebnis wie Paul und habe deshalb über mögliche alternativen nachgedacht: Die Zuweisung von F-Tasten für die Makros, die Du in der personal.xlsb definierst.

Wäre das von Interesse?

Grüße
d'r Bastler von den VBAsteleien.de
Win 10 + Office 2019 & Win11 + Office 2021 + Visio 2019 pro & macOS.X15 + Office2019pro & Android12 & XL365
xlKing
Beiträge: 67
Registriert: 30. Mai 2024, 19:42
Hat sich bedankt: 9 Mal
Danksagung erhalten: 57 Mal
Kontaktdaten:

Re: Startbutton in der Schnellstartleiste

#4

Beitrag von xlKing »

Hallo Theos,

grundsätzlich stimme ich den Vorrednern zu. Microsoft hat bewusst Veränderungen an den Symbolleisten per Makro ausgeschlossen, indem es die Ribbons eingeführt hat. Früher gab es zu viele Veränderungen durch manche Nutzer (z.B. Office in Dialekten mit Menüleisten in Sächsisch, Fränkisch usw.) Das hat Microsoft offenbar nicht gefallen. Daher die Ribbons. Um nun einem Ribbon ein Symbol für den Makrostart zuzuweisen, kann man entweder manuell vorgehen über Menüleiste anpassen oder man nutzt RibbonX. Mir wurde seinerzeit z.B. die wirklich sehr gut gemachte Seite von Rene Holtz empfohlen, wo man die wichtigsten Sachen dazu nachlesen kann.

Es gibt aber auch einen Weg deinem Wunsch zu entsprechen. Angenommen du hast in einem allgemeinen Modul (z.B. Modul1) zwei Makros liegen...

Code: Alles auswählen

Sub HalloWelt()
  MsgBox "HalloWelt"
End Sub
Sub HalloWelt2()
  MsgBox "HalloWelt2"
End Sub
... dann kannst du im Modul "DieseArbeitsmappe" folgenden Code hinterlegen.

Code: Alles auswählen

Private Sub Workbook_Open()
  
  Dim cb As CommandBar
  If cbExists("myCB") Then Set cb = Application.CommandBars("myCB") Else Set cb = Application.CommandBars.Add("myCB", msoBarTop, Temporary:=True)
  
  With cb
    .Visible = True
    With .Controls.Add(msoControlButton)
      .Visible = True
      .FaceId = 38
      .OnAction = "HalloWelt"
    End With
    With .Controls.Add(msoControlButton)
      .Visible = True
      .FaceId = 40
      .OnAction = "HalloWelt2"
    End With
  End With
End Sub

Private Function cbExists(n As String) As Boolean
  On Error Resume Next
  cbExists = IsObject(CommandBars(cb))
End Function
Der Code prüft ob bereits eine benutzerdefinierte Symbolleiste existiert und wenn nicht legt er diese an. Dann werden dort zwei Symbole erstellt, ihnen ein Bildchen (FaceID) und zu guter Letzt das Makro (OnAction) zugewiesen. Eine gute Übersicht welche Bildchen es so gibt, findest du hier.

Die Symbolleiste wird zunächst im Ribbon AddIns erstellt und dort angezeigt. Wenn du aber mit der rechten Maustaste draufgehst, kannst du diese der Schnellstartleiste hinzufügen. Dort erscheint sie als zusätzliches Symbol. Wenn du da drauf klickst öffnet sich eine Liste mit all deinen Benutzersymbolen.

Bei weiteren Fragen einfach melden.

Gruß Mr. K.
xlKing
Beiträge: 67
Registriert: 30. Mai 2024, 19:42
Hat sich bedankt: 9 Mal
Danksagung erhalten: 57 Mal
Kontaktdaten:

Re: Startbutton in der Schnellstartleiste

#5

Beitrag von xlKing »

Grade nochmal draufgeschaut. Die Funktion zur Prüfung ob existent muss natürlich so lauten.

Code: Alles auswählen

Private Function cbExists(n As String) As Boolean
  On Error Resume Next
  cbExists = IsObject(CommandBars(n))
End Function
Gruß Mr. K.
Folgende Benutzer bedankten sich beim Autor xlKing für den Beitrag:
d'r Bastler
knobbi38
Beiträge: 62
Registriert: 20. Okt 2024, 14:15
Hat sich bedankt: 4 Mal
Danksagung erhalten: 36 Mal
Kontaktdaten:

Re: Startbutton in der Schnellstartleiste

#6

Beitrag von knobbi38 »

Hallo Theos,

mit VBA direkt geht das nicht, aber du kannst natürlich die entsprechende XML-Datei vor dem Start per Programm überschreiben, was aber i.A. keine gute Idee ist.

Alternativ kannst du aber die Makros in ein Addin packen, dieses mit einer angepassten QAT speichern und dann in deinen Workbooks ggf. aktivieren.

https://learn.microsoft.com/en-us/previ ... dfrom=MSDN

und hier etwas über QAT, zwar für Word, dürfte aber im Prinzip auch für XL gelten:
https://addbalance.com/word/ribbonmodification.htm

Gruß Knobbi38
Folgende Benutzer bedankten sich beim Autor knobbi38 für den Beitrag:
d'r Bastler
Benutzeravatar
theos
Beiträge: 59
Registriert: 15. Sep 2022, 21:48
Hat sich bedankt: 5 Mal
Danksagung erhalten: 31 Mal
Kontaktdaten:

Re: Startbutton in der Schnellstartleiste

#7

Beitrag von theos »

Hallo zusammen.
Dachte ich mir schon fast, dass das nicht so einfach wird. Werde mir das mal der Reihe nach anschauen, danke für die Ideen!
Antworten

Wer ist online?

Mitglieder in diesem Forum: Ahrefs [Bot] und 2 Gäste