Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Ribbon - StartFromScratch per VBA

Forumthread: Ribbon - StartFromScratch per VBA

Ribbon - StartFromScratch per VBA
07.11.2014 09:07:26
Armin
Hallo zusammen,
ich habe folgende Frage.
Per XML lässt sich ja über startFromScratch="true" die komplette Symbolleiste in Excel deaktivieren. So weit so gut.
Kann dies evtl. auch per VBA gesteuert werden, so dass per VBA der Befehl startFromScratch auf false gestellt werden kann?
Vielen Dank für euere Tipps.
LG Armin

Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Ribbon - StartFromScratch per VBA
07.11.2014 11:09:00
mumpel
Hallo!
Nein, das ist nicht möglich.
Du hast aber die Möglichkeit, die Tabs einzeln aus- oder einzublenden. Hierzu nutzt man das getVisible-Attribut. Siehe hierzu Vorhandene Tabs anpassen und/oder Sichtbarkeit der Elemente in meinem Workshop.
Gruß, René

Anzeige
Nachtrag
07.11.2014 11:10:56
mumpel
Wenn Du "getVisible" nutzen möchtest darfst Du "startFromScratch" nicht einsetzen.

AW: Ribbon - StartFromScratch per VBA
07.11.2014 11:23:28
Armin
Hallo,
vielen Dank für deine Antwort.
Wäre es möglich, das Ein- und Ausblenden per VBA zu realisieren?
Eine VBA-Prozedur blendet bspw. alle oder bestimmte Registerkarten aus, eine andere Prozedur blendet alle Registerkarten wieder ein.
Wäre so etwas denkbar?
Viele Grüße
Armin

Anzeige
lies den Workshop. owT
07.11.2014 13:33:15
Rudi

AW: Ribbon - StartFromScratch per VBA
07.11.2014 13:41:13
mumpel
Mit "getVisible" in Verbindung mit dem onLoad-Ereignis kannst Du auch zur Laufzeit ein- und ausblenden. Stichwort objRibbon.Invalidate
RibbonX-Code:
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="onLoad_Test">
  <ribbon>
    <tabs>
    <tab id="tab0" label="Test">
      <group id="grp0" label="Test">
         <button id="btn0" label="Ein-Aus" imageMso="_1" size="large" onAction="onAction_Button1" />
      </group>
    </tab>
    <tab idMso="TabHome" getVisible="getVisible_IntTabs" />
    <tab idMso="TabDeveloper" getVisible="getVisible_IntTabs" />
    </tabs>
    </ribbon>
</customUI>


VBA/HTML - CodeConverter für Office-Foren
AddIn für Excel/Word 2000-2010 - komplett in VBA geschrieben von Lukas Mosimann
Projektbetreuung durch mumpel



Code erstellt und getestet in Office 15
VBA-Code:
Option Explicit

Public objRibbon       As IRibbonUI
Public bolVisibleTabs  As Boolean

Public Sub onLoad_Test(ribbon As IRibbonUI)
  Set objRibbon = ribbon
End Sub

Public Sub getVisible_IntTabs(control As IRibbonControl, ByRef returnValue)

If bolVisibleTabs Then returnValue = True

End Sub


Public Sub onAction_Button1(control As IRibbonControl)

    If bolVisibleTabs Then
       bolVisibleTabs = False
    Else
       bolVisibleTabs = True
    End If
    
 objRibbon.Invalidate
 
End Sub


VBA/HTML - CodeConverter für Office-Foren
AddIn für Excel/Word 2000-2010 - komplett in VBA geschrieben von Lukas Mosimann
Projektbetreuung durch mumpel



Code erstellt und getestet in Office 15

Anzeige
;
Anzeige

Infobox / Tutorial

Excel Ribbon anpassen: StartFromScratch per VBA


Schritt-für-Schritt-Anleitung

  1. Ribbon anpassen: Um das Excel Ribbon mithilfe von VBA zu steuern, benötigst du einen XML-Code, der die Struktur deines Ribbons definiert.

  2. XML-Code erstellen: Verwende das folgende Beispiel als Grundlage für deinen Ribbon-Code:

    <customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="onLoad_Test">
     <ribbon>
       <tabs>
         <tab id="tab0" label="Test">
           <group id="grp0" label="Test">
             <button id="btn0" label="Ein-Aus" imageMso="_1" size="large" onAction="onAction_Button1" />
           </group>
         </tab>
         <tab idMso="TabHome" getVisible="getVisible_IntTabs" />
         <tab idMso="TabDeveloper" getVisible="getVisible_IntTabs" />
       </tabs>
     </ribbon>
    </customUI>
  3. VBA-Code einfügen: Erstelle eine neue VBA-Prozedur in deinem Excel-Dokument:

    Option Explicit
    
    Public objRibbon As IRibbonUI
    Public bolVisibleTabs As Boolean
    
    Public Sub onLoad_Test(ribbon As IRibbonUI)
       Set objRibbon = ribbon
    End Sub
    
    Public Sub getVisible_IntTabs(control As IRibbonControl, ByRef returnValue)
       If bolVisibleTabs Then returnValue = True
    End Sub
    
    Public Sub onAction_Button1(control As IRibbonControl)
       bolVisibleTabs = Not bolVisibleTabs
       objRibbon.Invalidate
    End Sub
  4. Ribbon testen: Speichere die Änderungen und lade das Excel-Dokument neu, um die Änderungen am Ribbon zu sehen.


Häufige Fehler und Lösungen

  • Fehler 1: Das Ribbon wird nicht korrekt angezeigt.

    • Lösung: Überprüfe, ob der XML-Code korrekt in die Excel-Datei eingebettet wurde. Achte auf die richtige Struktur und Syntax.
  • Fehler 2: Die Prozedur läuft nicht.

    • Lösung: Stelle sicher, dass die Prozedur onLoad_Test korrekt aufgerufen wird und dass die Referenz für IRibbonUI korrekt gesetzt ist.

Alternative Methoden

Falls du das Ribbon nicht über VBA steuern möchtest, kannst du die Sichtbarkeit der Tabs auch über die Excel-Benutzeroberfläche anpassen. Gehe dazu zu den Excel-Optionen und wähle die gewünschten Registerkarten aus. Dies ist jedoch weniger flexibel als die Programmierung über VBA.


Praktische Beispiele

Ein praktisches Beispiel für das Ein- und Ausblenden von Registerkarten bietet die folgende VBA-Prozedur. Diese Prozedur lässt sich leicht anpassen, um verschiedene Registerkarten im Excel Ribbon zu steuern.

Public Sub ToggleTabs()
    bolVisibleTabs = Not bolVisibleTabs
    objRibbon.Invalidate
End Sub

Nutze diese Methode, um gezielt bestimmte Tabs im Ribbon ein- oder auszublenden, je nach Bedarf.


Tipps für Profis

  • Nutze getVisible: Mit dem getVisible-Attribut kannst du die Sichtbarkeit der Tabs dynamisch steuern. Dies erlaubt eine benutzerdefinierte Anpassung deines Excel Ribbons zur Laufzeit.

  • Testen in verschiedenen Excel-Versionen: Teste deinen Code in verschiedenen Versionen von Excel, um sicherzustellen, dass er überall funktioniert. Der Code sollte idealerweise in Excel 2013 oder neuer getestet werden.


FAQ: Häufige Fragen

1. Kann ich startFromScratch per VBA setzen? Nein, das ist nicht möglich. Du kannst jedoch die Sichtbarkeit der Tabs über getVisible steuern.

2. Wie kann ich mehrere Registerkarten gleichzeitig ein- oder ausblenden? Du kannst eine Schleife in deiner VBA-Prozedur verwenden, um die Sichtbarkeit mehrerer Tabs gleichzeitig zu steuern, indem du die bolVisibleTabs-Variable entsprechend änderst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige