Le barre dei comandi dei componenti aggiuntivi non vengono visualizzate o rimosse in Excel 2013 o versioni successive quando si caricano o si scaricano i componenti aggiuntivi

Sintomi

Quando si usano componenti aggiuntivi in Microsoft Excel 2013 o versioni successive, si verificano i problemi seguenti.

Problema 1

Quando si carica un componente aggiuntivo di Excel (xlam) o un componente aggiuntivo di Excel 97-2003 (xla), le barre dei comandi del componente aggiuntivo non vengono visualizzate automaticamente. È invece necessario chiudere tutte le cartelle di lavoro e quindi riavviare Excel per visualizzare le barre dei comandi.

Problema 2

Quando si scarica un componente aggiuntivo di Excel (con estensione xlam) o un componente aggiuntivo di Excel 97-2003 (con estensione xla) o si chiude una cartella di lavoro abilitata per le macro di Excel (con estensione xlsm) che contiene barre dei comandi, le barre dei comandi del componente aggiuntivo o della cartella di lavoro abilitata per le macro non vengono rimosse da tutte le cartelle di lavoro aperte.

Causa

Questi problemi si verificano a causa dell'interfaccia SDI (Single Document Interface) in Excel 2013 o versioni successive. Quando si usa un oggetto CommandBar legacy per creare voci di menu, le voci di menu vengono aggiunte alla scheda Add-Ins della barra multifunzione. In Excel 2013 o versioni successive ogni cartella di lavoro ha la propria barra multifunzione. Pertanto, quando si caricano o si scaricano componenti aggiuntivi dopo la creazione della barra multifunzione della cartella di lavoro, la barra multifunzione non viene aggiornata.

L'esempio di codice seguente crea voci di menu usando l'oggetto CommandBar:

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

Soluzione alternativa

Per risolvere il problema 1, chiudere tutte le cartelle di lavoro aperte e quindi riavviare Excel.

Per risolvere il problema 2, usare uno dei metodi seguenti:

  • Sostituire le barre dei comandi con un elemento della barra multifunzione (XML) nel componente aggiuntivo o nella cartella di lavoro abilitata per le macro. Per altre informazioni sulla barra multifunzione (XML), vedere Ribbon XML.For more information about the Ribbon (XML), see Ribbon XML.

  • Nell'evento Workbook_BeforeClose del componente aggiuntivo o della cartella di lavoro abilitata per le macro scorrere tutte le finestre aperte e rimuovere le barre dei comandi. Di seguito è riportato un esempio di codice:

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

Nota

In questo codice il segnaposto <ToolbarName> rappresenta un nome della barra dei comandi.