Лента MS Office Excel - Невозможно изменить / скрыть группу редактирования на вкладке «Главная»

У меня есть надстройка .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>

person A9S6    schedule 01.12.2009    source источник
comment
кто-нибудь с опытом работы с лентой?   -  person A9S6    schedule 08.12.2009


Ответы (1)


Я думаю, что idMso неверен в отношении сокрытия группы редактирования.

idMso = "GroupEditingExcel"

person Andy Pope    schedule 13.01.2010
comment
Большое спасибо, Энди. Я могу скрыть группу редактирования, используя идентификатор GroupEditingExcel. Вы можете дать мне ссылку, где я могу найти эти идентификаторы? Кроме того, я попробовал GroupClipboardExcel, и он не работал для группы буфера обмена, НО GroupClipboard работал ... странно, нет? Почему идентификаторы купола имеют суффикс Excel? - person A9S6; 15.01.2010
comment
Хотя я решил проблему с помощью параметра ref bool cancelDefault метода обработчика, я отмечу это как ответ, потому что он фактически отвечает на одну из моих проблем в основном вопросе. - person A9S6; 15.01.2010