public void AddCommandMenu(string commandName, string menuName, string menuText, string description, string shortCut, string helpTopic) { try // Basically suppress problems here..? { CommandBarPopup menu; if (!_foundMenus.TryGetValue(menuName, out menu)) { // We've not seen this menu before // Check if the menu exists CommandBars commandBars = ExcelCommandBarUtil.GetCommandBars(); CommandBar worksheetBar = commandBars[1]; CommandBarControls controls = worksheetBar.Controls; int controlCount = controls.Count(); for (int i = 1; i <= controlCount; i++) { CommandBarControl control = controls[i]; if (control.Caption == menuName && control is CommandBarPopup) { menu = (CommandBarPopup)control; _foundMenus[menuName] = menu; break; } } if (menu == null) { // Make a new menu menu = controls.AddPopup(menuName); menu.Caption = menuName; _addedMenus.Add(menu); _foundMenus[menuName] = menu; } } CommandBarControls menuButtons = menu.Controls; int buttonCount = menu.Controls.Count(); for (int i = 1; i <= buttonCount; i++) { CommandBarControl button = menuButtons[i]; if (button.Caption == menuText && button is CommandBarButton) { button.OnAction = commandName; return; } } // If we're here, need to add a button. CommandBarButton newButton = menuButtons.AddButton(); newButton.Caption = menuText; newButton.OnAction = commandName; _addedButtons.Add(newButton); } catch (Exception e) { Logger.Initialization.Error(e, "MenuManager.AddCommandMenu Error"); } }
public override CommandBars GetCommandBars() { return(ExcelCommandBarUtil.GetCommandBars()); }