对 Office 项目中对象的全局访问

创建 Office 项目时,Visual Studio 自动生成项目中命名 Globals 的类。 在运行时,可以使用 Globals 类从项目中的任何代码访问多个项目项。

适用于: 本主题中的信息适用于文档级项目和 VSTO 外接程序项目。 请参阅 Office 应用程序和项目类型提供的功能

如何使用 Globals 类

Globals 是一个静态类,用于保留对项目中某些项的引用。 通过使用 Globals 类,可以在运行时从项目中的任何代码访问以下项:

  • ThisWorkbookSheet个类在 Excel 工作簿或模板项目中。 可以使用Globals.ThisWorkbook属性和Sheetn属性来访问这些对象。

  • ThisDocument Word 文档或模板项目中的类。 可以使用该属性访问此对象 Globals.ThisDocument

  • VSTO 外接程序项目中的ThisAddIn类。 可以使用该属性访问此对象 Globals.ThisAddIn

  • 使用功能区设计器自定义的项目中的所有功能区。 可以使用属性 Globals.Ribbons 访问功能区。 有关详细信息,请参阅 运行时访问功能区界面

  • Outlook VSTO 外接程序项目中的所有 Outlook 窗体区域。 可以使用 Globals.FormRegions 属性访问表单区域。 有关详细信息,请参阅 运行时访问窗体区域

  • 一个工厂对象,可用于在面向 .NET Framework 4 或 .NET Framework 4.5 的项目中在运行时创建功能区控件和托管项。 可以使用该属性访问此对象 Globals.Factory 。 此对象是实现以下接口的类的实例:

    例如,当用户在 Excel 的文档级项目中点击操作窗格上的按钮时,可以使用Globals.Sheet1属性将文本插入到控件NamedRangeSheet1

    private void button1_Click(object sender, EventArgs e)
    {
        Globals.Sheet1.namedRange1.Value2 = this.textBox1.Text;
    }
    

在初始化文档或 VSTO 外接程序之前尝试使用该 Globals 类的代码可能会引发运行时异常。 例如,在声明类级变量时使用 Globals 可能失败,因为 Globals 该类在实例化声明的对象之前可能无法使用对所有宿主项的引用进行初始化。

注释

Globals 永远不会在设计时初始化,但控件实例由设计器创建。 这意味着,如果在用户控件类中创建使用类的属性 Globals 的用户控件,则必须在尝试使用返回的对象之前检查该属性是否返回 null