Paski poleceń dodatków nie są wyświetlane ani usuwane w programie Excel 2013 lub nowszym podczas ładowania lub zwalniania dodatków

Symptomy

W przypadku korzystania z dodatków w Microsoft Excel 2013 lub nowszych występują następujące problemy.

Problem 1

Po załadowaniu dodatku programu Excel (xlam) lub dodatku programu Excel 97-2003 (xla) paski poleceń dodatku nie są wyświetlane automatycznie. Zamiast tego należy zamknąć wszystkie skoroszyty, a następnie ponownie uruchomić program Excel, aby wyświetlić paski poleceń.

Problem 2

Jeśli zwalniasz dodatek programu Excel (xlam) lub dodatek programu Excel 97-2003 (xla) lub zamykasz skoroszyt z obsługą makr programu Excel (xlsm), który zawiera paski poleceń, paski poleceń dodatku lub skoroszyt z obsługą makr nie są usuwane ze wszystkich otwartych skoroszytów.

Przyczyna

Te problemy występują z powodu interfejsu SDI (Single Document Interface) w programie Excel 2013 lub nowszym. W przypadku korzystania ze starszego obiektu CommandBar do tworzenia elementów menu elementy menu są dodawane do karty Add-Ins wstążki. W programie Excel 2013 lub nowszym każdy skoroszyt ma własną wstążkę. W związku z tym podczas ładowania lub zwalniania dodatków po utworzeniu wstążki skoroszytu wstążka nie jest aktualizowana.

Poniższy przykład kodu tworzy elementy menu przy użyciu obiektu CommandBar:

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

Obejście problemu

Aby obejść problem 1, zamknij wszystkie otwarte skoroszyty, a następnie uruchom ponownie program Excel.

Aby obejść problem 2, użyj jednej z następujących metod:

  • Zastąp paski poleceń elementem Wstążki (XML) w dodatku lub skoroszycie z obsługą makr. Aby uzyskać więcej informacji na temat wstążki (XML), zobacz Wstążka XML.

  • W Workbook_BeforeClose przypadku dodatku lub skoroszytu z obsługą makr wykonaj pętlę przez wszystkie otwarte okna i usuń paski poleceń. Poniżej przedstawiono przykład kodu:

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

Uwaga

W tym kodzie symbol zastępczy <ToolbarName> reprezentuje nazwę paska poleceń.