Как выделить ленту в Excel?

#c# #.net #excel #vsto

#c# #.net #excel #vsto

Вопрос:

Я работаю над надстройкой Excel, у которой есть собственная лента с некоторыми кнопками, которые выполняют некоторый доступ / заполнение данных. Одна из кнопок / функций импортирует некоторые данные и заполняет рабочий лист. После заполнения листа он преобразует данные в таблицу Excel, используя следующий код —

    fullRange.Worksheet.ListObjects.AddEx(
    SourceType: Microsoft.Office.Interop.Excel.XlListObjectSourceType.xlSrcRange,
    Source: fullRange,
    XlListObjectHasHeaders: Microsoft.Office.Interop.Excel.XlYesNoGuess.xlYes);
 

Моя проблема в том, что каждый раз, когда выполняется заполнение данных в формате таблицы Excel, выделенная лента изменяется на Design-> Table Tools, а не на мою добавленную ленту.

Итак, мой вопрос… Есть ли способ программно выделить ленту в Excel с помощью VSTO? так что я могу сделать это сразу после заполнения. Заранее спасибо!

Комментарии:

1. Обычно я использую VBA, а не VSTO. Есть ли у VSTO IRibbonUI тип объекта? В VBA вы затемняете объект, а IRibbonUI затем используете ActivateTab метод.

Ответ №1:

Два способа выбрать правильную вкладку ленты:

 TabLetters.RibbonUI.ActivateTab("yourTab"); 
 

или

 Globals.Ribbons.CustomRibbon.Tabs[Your tab id].RibbonUI.ActivateTab("yourTab");
 

Комментарии:

1. Это то, что говорится в документации, но я никогда не заставлял ее работать. Мне любопытно, прошла ли операция успешно

2. @Hambone я в конечном итоге использовал this.RibbonUI.ActivateTab("ControlID of Ribbon"); для своего дополнения в Excel 2013.