Проблема: после обновления Office 2010 до 2013 надстройка Essbase Excel ("essexcln.xll", поддержка которой Oracle прекратилась в 2013 году) приводит к тому, что фокус всегда возвращается к окну с активное соединение, когда открыто более 1 окна. Если надстройка Essbase загружается при запуске, Excel также зависает. Обратите внимание, что Smartview заменил эту надстройку, но по другим причинам мне нужно продолжать ее использовать. Я могу вручную перейти в меню «Файл» > «Параметры» > «Надстройки» > «Управление надстройками Excel» и вручную проверить/снять отметку, когда Essbase вызывает эти ошибки, но я бы предпочел сделать это с помощью быстрого сочетания клавиш.
Временное решение. Создайте пользовательскую надстройку, чтобы быстро переключать свойство надстройки Essbase installed
для ее загрузки и выгрузки. Возможно, надстройка — это излишество, но на самом деле я не использую PERSONAL.XLSB, и мне бы хотелось, чтобы эта функция была доступна в любое время.
Проблема 2. Когда надстройка Essbase выгружена, в строке меню «Надстройка» по-прежнему отображается настраиваемая команда: «О надстройке электронных таблиц Oracle Essbase». «Essexcln.xll», как известно, содержит ошибки, и это «О надстройке электронных таблиц Oracle Essbase» может задерживаться, даже если надстройка не отмечена вручную. Мое решение — использовать ActiveMenuBar.Reset
— только после того, как я выгрузил надстройку. Я не хочу выполнять сброс, если я только что переключил Installed
на True
.
Есть ли альтернатива ActiveMenuBar.Reset
? Это похоже на взлом — вроде как использование ActiveCell
или ActiveSheet
— но я не хочу вручную проверять/снимать галочку надстройки, которая в любом случае может очищать или не очищать «About Essbase...».
Примечания: Да, возможно, не самый эффективный цикл через Add-ins
, но их так мало, что мне все равно. Я бы предпочел избегать использования ActiveMenuBar
.
Sub Toggle_Essbase_AddIn()
Dim x As AddIn
Dim installed As Boolean
For Each x In Application.AddIns
If x.Name = "essexcln.xll" Then
' Get initial installed status
installed = x.installed
' Toggle
x.installed = Not x.installed
' Reset menu bar if Essbase was initially installed
If installed Then
ActiveMenuBar.Reset
End If
Exit Sub
End If
Next x
End Sub