Outlook中的XMLfunction区 – 使其显示在特定窗口中

我正在尝试使用XML在Outlook中创建function区,并且无法找到具体如何告诉我的加载项我只希望function区出现在Explorer窗口中。

建议吗?

谢谢。

我的Ribbon1.XML文件:

      

弹出的神奇错误框说:

testingOLaddin2中的CustomUI运行时错误

 Error found in CustomUI XML of "testingOLaddin2" Line: 3 Column: 10 Error Code 0x80004005 Failed to find Office control by ID ID: TabMail 

每个请求,我的function区生成代码:

 using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Reflection; using System.Runtime.InteropServices; using System.Text; using Office = Microsoft.Office.Core; using System.Diagnostics; namespace testingOLaddin2 { [ComVisible(true)] public class Ribbon1 : Office.IRibbonExtensibility { private Office.IRibbonUI ribbon; public Ribbon1() { } #region IRibbonExtensibility Members public string GetCustomUI(string ribbonID) { return GetResourceText("testingOLaddin2.Ribbon1.xml"); } #endregion #region Ribbon Callbacks //Create callback methods here. For more information about adding callback methods, select the Ribbon XML item in Solution Explorer and then press F1 public void Ribbon_Load(Office.IRibbonUI ribbonUI) { this.ribbon = ribbonUI; } #endregion #region Helpers private static string GetResourceText(string resourceName) { Assembly asm = Assembly.GetExecutingAssembly(); string[] resourceNames = asm.GetManifestResourceNames(); for (int i = 0; i < resourceNames.Length; ++i) { if (string.Compare(resourceName, resourceNames[i], StringComparison.OrdinalIgnoreCase) == 0) { using (StreamReader resourceReader = new StreamReader(asm.GetManifestResourceStream(resourceNames[i]))) { if (resourceReader != null) { return resourceReader.ReadToEnd(); } } } } return null; } #endregion } } 

这取决于您用于创建插件和function区的方法。 如果你正在使用

 IRibbonExtensibility.GetCustomUI(string RibbonId) 

如果RibbonId参数具有值,则只能通过返回function区xml来完成此操作

 "Microsoft.Outlook.Explorer" 

编辑

您的代码更改后可能会有效:

 public string GetCustomUI(string ribbonID) { if (ribbonID == "Microsoft.Outlook.Explorer") return GetResourceText("testingOLaddin2.Ribbon1.xml"); return null; // if problems here, try return string.Empty } 

您的GetCustomUI(string RibbonId)一旦您在ThisAddIn类中实现CreateRibbonExtensibilityObject()以返回您的function区类的新实例,则由Outlook调用。 Ribbon类是您引用XML的地方(在GetCustomUI )。

对于XML本身,您需要单独引用每个Outlook资源管理器类型。 不幸的是,据我所知,在Ribbon XML语法中没有一种指定“所有探索者”的总体方法。

以下是引用邮件和日历资源管理器的一些示例:

              

Microsoft确实提供了有关内置选项卡的idMso属性的一些提示,但不幸的是它隐藏在这个Excel电子表格中: 链接