Thank you Paul for your feedback,
Sorry for beeing a novice; I've been able to use the callback concept for adding sheet-dependent custom tabs (using getVisible callbacks) but the getImage seems tricky
It seems like file uploads are not possible anymore here?! So, I can just show you the VBE code and xml below:
'Menüband laden (Callback für customUI.onLoad; wird beim Öffnen der Datei ausgeführt)Sub subRibbonOnLoad(ribbon As IRibbonUI)
'Variablen dimensionieren/speichern
Set rbnRib = ribbon
If Not ObjPtr(ribbon) = 0 Then
With wsHelfer
.Unprotect
.Range("B3").Value = ObjPtr(ribbon)
.Protect
End With
End If
End Sub
'Menüband wechseln (Callback für CustomUI.subGetVisible; wird beim Blattwechsel ausgeführt)
Sub subGetVisible(control As IRibbonControl, ByRef visible)
If control.Tag = strRibbonTag Then
visible = True
Else
visible = False
End If
End Sub
'Callback for Toggle_1_Allg getPressed
Sub subGetPressed(control As IRibbonControl, ByRef pressed)
End Sub
Sub subGetImage(imageID As String, ByRef image)
Dim tabMenüBand As ListObject: Set tabMenüBand = wsHelfer.ListObjects("tabMenüBand")
Dim strButton As String
strButton = Mid(control.ID, InStr(1, control.ID, "_") + 1, Len(control.ID))
strButton = Left(strButton, InStr(strButton, "_") - 1)
If strButton = "0" Then
image = "Icon_" & control.Tag & "0"
image = "Icon_" & control.Tag & "1"
End If
End Sub
'Menüband aktualisieren/neu zeichnen (Callback für CustomUI.invalidate; wird beim Öffnen/Blattwechsel ausgeführt)
Sub subRefreshRibbon(Tag As String)
'Variablen dimensionieren/speichern
strRibbonTag = Tag
If rbnRib Is Nothing Then
If Not CStr(wsHelfer.Range("B3")) = "" Then
Set rbnRib = fctgetribbon(wsHelfer.Range("B3").Value)
rbnRib.Invalidate
End If
Else
rbnRib.Invalidate
End If
End Sub
'Pointer für zu ladendes Menüband ermitteln (i.e Speicherort des Menübandstatuses im Arbeitsspeicher)
Function fctgetribbon(ByVal rbnPointer As LongPtr) As IRibbonUI
CopyMemory rbnRib, rbnPointer, LenB(rbnPointer)
Set fctgetribbon = rbnRib
End Function
<?xml version="1.0" encoding="utf-8"?>
<customUI onLoad="subRibbonOnLoad" loadImage="subGetImage" xmlns="http://schemas.microsoft.com/office/2009/07/customui">
<ribbon startFromScratch="false" >
<tabs>
<tab id="Allgemein" label="Allgemein" insertBeforeMso="TabHome" getVisible="subGetVisible" tag="wsAllg">
<group id="Ansicht_Allg" label="Ansicht">
<toggleButton id="Toggle_1_wsAllg" tag="1" size="large" getImage="subGetImage" screentip="1 Managementfähigkeiten" getPressed="subGetPressed" />
<toggleButton id="Toggle_2_wsAllg" tag="2" size="large" getImage="subGetImage" screentip="2 Fähigkeiten im Verhalten" getPressed="subGetPressed" />
<toggleButton id="Toggle_3_wsAllg" tag="3" size="large" getImage="subGetImage" screentip="3 Fachkompetenz allgemein" getPressed="subGetPressed" />
<toggleButton id="Toggle_4_wsAllg" tag="4" size="large" getImage="subGetImage" screentip="4 Fachkompetenz anlagenspezifisch" getPressed="subGetPressed" />
<toggleButton id="Toggle_5_wsAllg" tag="L1" size="large" getImage="subGetImage" screentip="Level 1 Kompetenzen" getPressed="subGetPressed" />
<toggleButton id="Toggle_6_wsAllg" tag="L2" size="large" getImage="subGetImage" screentip="Level 2 Themen" getPressed="subGetPressed" />
<toggleButton id="Toggle_7_wsAllg" tag="L3" size="large" getImage="subGetImage" screentip="Level 3 Trainings" getPressed="subGetPressed" />
</group>
</tab>
</tabs>
</ribbon>
</customUI>