3

我正在开发我的第一个 Word 2007 插件,并在我的项目中添加了一个 OfficeRibbon。在按钮单击处理程序中,我希望引用当前Word.DocumentWord.Application.

我正在尝试通过OfficeRibbon.Context属性获取引用,文档说它应该引用当前Application对象。然而,它总是null

有没有人知道

a)如果我需要做一些事情来使OfficeRibbon.Context显示正确填充?
b) 如果有其他方式我可以获得对 Word 应用程序或活动 Word 文档的引用?

笔记:

  • 我正在使用 VS2008 SP1

  • 功能区看起来初始化正常:功能区在 Word 中正确呈现;我可以通过构造函数和 OnLoad 成员单步调试调试器;按钮单击处理程序正确执行。

  • 这是此属性的在线帮助

OfficeRibbon.Context 属性

C#
public Object Context { get; internal set; }

表示与此 OfficeRibbon 对象关联的 Inspector 窗口或应用程序实例的 Object。

评论

在 Outlook 中,此属性是指显示此 OfficeRibbon 的 Inspector 窗口。

在 Excel、Word 和 PowerPoint 中,此属性返回显示此 OfficeRibbon 的应用程序实例。

4

4 回答 4

4

我在使用 VS2008 SP1 创建 Excel 2007 插件时也遇到了这个问题。我使用的解决方法是将应用程序存储在internal static主 AddIn 类的属性中,然后在功能区的事件处理程序中引用它:

public partial class ThisAddIn
{
    internal static Application Context { get; private set; }

    private void ThisAddIn_Startup(object sender, System.EventArgs e)
    {
        Context = Application;
    }
    ...
}

public partial class MyRibbon : OfficeRibbon
{
    private void button1_Click(object sender, RibbonControlEventArgs e)
    {
        DoStuffWithApplication(ThisAddIn.Context);
    }
    ...
}
于 2009-05-21T22:05:39.340 回答
2

尝试通过以下方式引用文档:

Globals.ThisDocument.[some item]

MSDN 参考

于 2009-05-22T06:41:14.480 回答
2

从以下位置获取:

Globals.ThisAddIn.Application

于 2012-06-13T21:21:49.690 回答
1

虽然我对 Office 2007 字对象模型的变化了解不多,但这里是我使用 VBA 知识的解释。

应用程序是一个全局可用的对象。此外,Application.ActiveDocument 应该让您处理当前文档。

推测:您如何尝试添加功能区?

于 2008-11-02T04:32:51.687 回答