1

我有一个使用 XML 扩展包向 Microsoft Word 添加功能的项目。目前,当我们给客户的文档打开时,它会加载我们的包,该包执行 SmartDocInitialize 方法,该方法使用 Microsoft.Office.Core.CommandBar.Controls.Add 等向主菜单和工具栏添加内容。未经修改,在 Word 2007 中打开时,这些按钮会添加到“加载项”功能区选项卡上,但这并不理想,因为这些按钮都很小,没有正确分组,并且无法将“加载项”选项卡带到装入文档时的正面。

如果文档在 Office 2003 中打开,我想保持此功能相同,但如果文档在 Office 2007 中打开,我想读取描述我的新功能区选项卡和所有按钮的 xml 文件。我在网上找到的所有东西似乎都导致功能区文件只有在你有一个非常具体的魔法组合时才会被加载(在 Visual Studio 中构建并且它可以工作,但没有关于如何将它部署给用户的信息框),并且只有在您最初使用 Visual Studio 工具为 Office 属性创建的整个项目时才有效,而我目前没有。

我们的开发环境是 XP、Visual Studio 2005、C#、.NET 2.0

4

2 回答 2

2

Ribbon UI 不像旧的 CommandBars UI 那样程序化。我不认为你可以做你想做的事。据我所知,以编程方式修改功能区 UI 的唯一方法是让(COM)加载项实现 IRibbonExtensibility 接口并从 GetCustomUI 方法返回自定义 XML 文件(带有功能区定义)。无法像使用 CommandBars UI 那样一次添加或删除一个按钮。这完全不同。我不相信您可以从文档中的某些宏中执行您想要的操作。

我不熟悉 XML 扩展包,但如果您必须在用户的 PC 上安装它们,也许您也可以安装一个加载项,它可以为您加载适当的功能区 XML。

于 2009-08-17T19:27:17.267 回答
0

这并不像看起来那么难。

如果您已经将功能区按钮连接到文档中的某些 VBA 宏,那么您只需在 VBA 项目中添加对 com 可见 .net 程序集的引用。

.net 程序集除了被标记为 com 可见(因此它在引用对话框中显示为类型库)之外,还必须具有一些设置为可从 VBA 调用的方法。

谷歌“vba .net 可调用”

这并不难,将类标记为 com 可见,使用 ProgID 属性声明它,公开方法,确保您的方法返回简单类型,并使用 regasm 在目标机器上注册程序集(在开发盒上不需要)。

于 2009-11-15T23:17:40.040 回答