Проблема возникает из-за того, что setVisibility
запускается до загрузки рабочей книги. То есть setVisibility
будет работать при загрузке надстройки.
Одним из решений является добавление проверки, загружена ли какая-либо рабочая книга с помощью Workbooks.Count
, а затем обновление видимости при каждой активации рабочей книги:
public bool setVisbility(Office.IRibbonControl control)
{
int nWorkbooks = Globals.ThisAddIn.Application.Workbooks.Count;
if (nWorkbooks == 0)
{
return false;
}
if (Globals.ThisAddIn.Application.ActiveWorkbook != null &&
Globals.ThisAddIn.Application.ActiveWorkbook.Name == "Template.xlsm")
{
return true;
}
else
{
return false;
}
}
А затем в свой метод ThisAddIn_StartUp добавьте обработчик событий для активированной книги:
this.Application.WorkbookActivate += Application_WorkbookActivate;
Затем, когда книга активирована, принудительно подтвердите ленту следующим образом:
private void Application_WorkbookActivate(Workbook Wb)
{
RibbonClass.RibbonInstance.Invalidate()
}
В зависимости от вашего названия курса.