Как отладить E_FAIL из CommandBars.ExecuteMso? - PullRequest
0 голосов
/ 06 июня 2018

При использовании моей надстройки PowerPoint некоторые пользователи получают следующее исключение: Error HRESULT E_FAIL has been returned from a call to a COM component. Это происходит при попытке создать новую презентацию с Application.CommandBars.ExecuteMso("FileNew"), которая должна открыть вкладку Backstage.

Осложнения:

  1. Для пользователя поддерживается Backstage (в PowerPoint 2016)
  2. В официальной документации Microsoft указано только возвращение E_FAIL в случае сбояне давая никаких дополнительных подсказок для C # , а также для VBA
  3. Я не могу воспроизвести проблему ни на одной из доступных мне машин

Как я могу отладить и попытаться предотвратить это исключение?

Ответы [ 2 ]

0 голосов
/ 06 июня 2018

Вам необходимо использовать ActivateTabMso интерфейса IRibbonUI, если вы хотите активировать определенную встроенную вкладку.После этого вы сможете использовать метод ExecuteMso.

Подробнее об этом можно узнать в Расширение ленты в Office 2010: активация вкладок и автоматическое масштабирование

0 голосов
/ 06 июня 2018

Благодаря Хансу Пассанту, который переформулировал код ошибки «E_Fail для элементов управления, которые не включены или не видимы », я дважды проверил объект CommandBars, чтобы выяснить, что естьдва метода:

  1. Application.CommandBars.GetEnabledMso ( CommandName )
  2. Application.CommandBars.GetVisibleMso ( CommandName )

Таким образом, я использую первый, чтобы проверить, включена ли команда перед ее выполнением.

...