Befehlsleisten von Add-Ins werden in Excel 2013 oder höher nicht angezeigt oder entfernt, wenn Sie die Add-Ins laden oder entladen.

Symptome

Wenn Sie Add-Ins in Microsoft Excel 2013 oder höher verwenden, treten die folgenden Probleme auf.

Problem 1

Wenn Sie ein Excel-Add-In (xlam) oder ein Excel 97-2003-Add-In (xla) laden, werden die Befehlsleisten des Add-Ins nicht automatisch angezeigt. Stattdessen müssen Sie alle Arbeitsmappen schließen und dann Excel neu starten, um die Befehlsleisten anzuzeigen.

Problem 2

Wenn Sie ein Excel-Add-In (.xlam) oder ein Excel 97-2003-Add-In (.xla) entladen oder eine Arbeitsmappe mit Aktiviertem Excel-Makro (XLSM) mit Befehlsleisten schließen, werden die Befehlsleisten des Add-Ins oder der makrofähigen Arbeitsmappe nicht aus allen geöffneten Arbeitsmappen entfernt.

Ursache

Diese Probleme treten aufgrund der Single Document Interface (SDI) in Excel 2013 oder höher auf. Wenn Sie ein Älteres CommandBar-Objekt zum Erstellen von Menüelementen verwenden, werden die Menüelemente der Registerkarte Add-Ins des Menübands hinzugefügt. In Excel 2013 oder höher verfügt jede Arbeitsmappe über ein eigenes Menüband. Wenn Sie Add-Ins laden oder entladen, nachdem das Menüband der Arbeitsmappe erstellt wurde, wird das Menüband daher nicht aktualisiert.

Im folgenden Codebeispiel werden Menüelemente mithilfe des CommandBar-Objekts erstellt:

Application.CommandBars("Worksheet Menu Bar").Controls.Add Type:=msoControlPopup

Problemumgehung

Um Problem 1 zu umgehen, schließen Sie alle geöffneten Arbeitsmappen, und starten Sie Dann Excel neu.

Um Problem 2 zu umgehen, verwenden Sie eine der folgenden Methoden:

  • Ersetzen Sie Befehlsleisten durch ein Menübandelement (XML) im Add-In oder in der Makro-fähigen Arbeitsmappe. Weitere Informationen zum Menüband (XML) finden Sie unter Menüband-XML.

  • Durchlaufen Sie im Workbook_BeforeClose-Ereignis des Add-Ins oder der Makro-fähigen Arbeitsmappe alle geöffneten Fenster, und entfernen Sie die Befehlsleisten. Es folgt ein Codebeispiel:

    For Each wnd In Application.Windows
            wnd.Activate
            Application.CommandBars("<ToolbarName>").Delete
    Next wnd
    

Hinweis

In diesem Code stellt der Platzhalter <ToolbarName> einen Befehlsleistennamen dar.