У меня есть расширение .net для Excel. Надстройка создает ленточный интерфейс для Excel 2007 и повторно использует некоторые существующие команды, такие как «Вырезать», «Копировать», «Вставить», «Сортировать» и т. Д.
Для функций Вырезать, Копировать и Вставить я просто переопределяю их значение OnAction, чтобы вызывать мою собственную процедуру при нажатии кнопок. Но для команд Sort, Sort Asc и Sort Desc ситуация несколько иная. При нажатии любой из кнопок Sort, Sort Asc или Sort Desc я хочу получить уведомление и затем вызвать функциональность по умолчанию. Это стало возможным в панелях команд Excel 2003 путем вызова метода Execute () для CommandBarControl.
В Excel 2007 есть метод ExecuteMso () для программного щелчка по элементу ленты, но когда OnAction переопределяется, этот метод ExecuteMso () просто выполняет мою собственную процедуру, а не стандартную функциональность этого кнопка.
Поэтому я подумал, что спрятал кнопки «Сортировка» в группе «Редактирование» на вкладке «Главная» и добавил к ней свои собственные кнопки «Сортировка», «Сортировка по Asc» и «Сортировка по дескриптору». Сначала кнопки вызовут мою процедуру, откуда я вызову поведение по умолчанию.
Теперь проблема в том, что я не могу изменить / скрыть группу редактирования (idMso = "GroupEditing"). Эта встроенная группа не редактируется? Однако я могу скрыть буфер обмена и другие группы (но не могу добавить к ним кнопки).
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
<ribbon>
<tabs>
<tab idMso="TabHome">
<group idMso="GroupEditing" visible="false" />
</tab>
</tabs>
</ribbon>
</customUI>