A bővítmények betöltésekor vagy eltávolításakor a bővítmények parancssávjai nem jelennek meg vagy távolíthatók el az Excel 2013-ban vagy újabb verzióiban

Jelenségek

Ha bővítményeket használ Microsoft Excel 2013 vagy újabb verzióiban, az alábbi problémákat tapasztalja.

1. kiadás

Excel-bővítmény (xlam) vagy Excel 97–2003-bővítmény (xla) betöltésekor a bővítmény parancssávjai nem jelennek meg automatikusan. Ehelyett be kell zárnia az összes munkafüzetet, majd újra kell indítania az Excelt a parancssávok megjelenítéséhez.

2. kiadás

Ha eltávolít egy Excel-bővítményt (.xlam) vagy egy Excel 97–2003-as bővítményt (.xla), vagy bezár egy parancssávokat tartalmazó Excel-makróbarát munkafüzetet (.xlsm), a bővítmény vagy a makróbarát munkafüzet parancssávjai nem lesznek eltávolítva az összes megnyitott munkafüzetből.

A probléma oka

Ezek a problémák az Excel 2013-ban vagy újabb verzióiban az egydokumentumos felület (SDI) miatt fordulnak elő. Ha egy örökölt CommandBar objektumot használ a menüelemek létrehozásához, a menüelemek a menüszalag Add-Ins lapjára kerülnek. Az Excel 2013-as vagy újabb verzióiban minden munkafüzet saját menüszalagot tartalmaz. Ezért amikor a munkafüzet menüszalagjának létrehozása után betölti vagy eltávolítja a bővítményeket, a menüszalag nem frissül.

A következő kódminta menüelemeket hoz létre a CommandBar objektum használatával:

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

Kerülő megoldás

Az 1. probléma megoldásához zárja be az összes megnyitott munkafüzetet, majd indítsa újra az Excelt.

A 2. probléma megoldásához használja az alábbi módszerek egyikét:

  • Cserélje le a parancssávokat a bővítmény vagy a makróbarát munkafüzet menüszalagelemére. A menüszalagról (XML) további információt a Menüszalag XML-fájljában talál.

  • A bővítmény vagy a makróbarát munkafüzet Workbook_BeforeClose eseményében végiglépkedhet az összes megnyitott ablakban, és eltávolíthatja a parancssávokat. Az alábbiakban egy kódminta látható:

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

Megjegyzés:

Ebben a kódban a ToolbarName> helyőrző < egy parancssáv nevét jelöli.