У меня есть надстройка .net для Excel. Надстройка создает пользовательский интерфейс ленты для Excel 2007 и изменяет назначение некоторых существующих команд, таких как «Вырезать», «Копировать», «Вставить», «Сортировка» и т. Д.
Для «Вырезать», «Копировать» и «Вставить» я просто переопределяю их значение OnAction, чтобы вызывать мою собственную процедуру при нажатии кнопок. Но для команд «Сортировка», «Сортировка по возрастанию» и «Сортировка по убыванию» ситуация немного отличается. Когда нажимается одна из кнопок «Сортировка», «Сортировка по возрастанию» или «Сортировка по убыванию», я хочу получить уведомление, а затем вызвать функцию по умолчанию. Это стало возможным в панелях команд Excel 2003 путем вызова метода Execute () для CommandBarControl.
В Excel 2007 существует метод ExecuteMso () для программного щелчка по элементу ленты, но когда OnAction переопределяется, этот метод ExecuteMso () просто выполняет мою собственную процедуру, а не функции по умолчанию этой кнопки.
Поэтому я подумал, что скрою кнопки сортировки в группе «Редактирование» на вкладке «Главная» и добавлю к ним свои собственные кнопки «Сортировка», «Сортировка по возрастанию» и «Сортировка по убыванию». Сначала кнопки будут вызывать мою процедуру, откуда я буду вызывать поведение по умолчанию.
Теперь проблема в том, что я не могу изменить / скрыть группу редактирования (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>