#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.