如何从CommandBars.ExecuteMso调试E_FAIL?

时间:2018-06-06 10:09:12

标签: c# ms-office powerpoint office-interop office-addins

在使用我的PowerPoint加载项时,一些用户会遇到以下异常: Error HRESULT E_FAIL has been returned from a call to a COM component. 尝试使用Application.CommandBars.ExecuteMso("FileNew")创建新演示文稿时会发生这种情况,该演示文稿应该打开后台选项卡。

并发症:

  1. 用户支持后台(在PowerPoint 2016上)
  2. Microsoft官方文档仅说明E_FAIL在发生故障时的返回情况,不再提供C#以及VBA
  3. 的更多线索
  4. 我无法在任何可用的机器上重现问题
  5. 如何调试并尝试阻止此异常?

2 个答案:

答案 0 :(得分:1)

感谢Hans Passant为非启用或不可见"的控件重述了错误代码" E_Fail,我仔细检查了{{ 1}}找出有两种方法的对象:

  1. Application.CommandBars.GetEnabledMso(的CommandName
  2. Application.CommandBars.GetVisibleMso(的CommandName
  3. 所以我使用第一个来检查命令是否在执行之前被启用。

答案 1 :(得分:0)

如果要激活特定的内置选项卡,则需要使用ActivateTabMso接口的IRibbonUI。然后,您将能够使用ExecuteMso方法。

您可以在Ribbon Extensibility in Office 2010: Tab Activation and Auto-Scaling

中详细了解相关内容