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

更新:2010 年 5 月

创建 Office 项目时,Visual Studio 会自动在项目中生成名为 Globals 的类。 您可以使用 Globals 类在运行时从项目内的任何代码中访问若干不同的项目项。

**适用于:**本主题中的信息适用于 Microsoft Office 2010 和 2007 Microsoft Office system 的文档级项目和应用程序级项目。有关更多信息,请参见按 Office 应用程序和项目类型提供的功能

如何使用 Globals 类

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

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

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

  • 应用程序级项目中的 ThisAddIn 类。 可以使用 Globals.ThisAddIn 属性访问此对象。

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

  • Outlook 外接程序项目中的所有 Outlook 窗体区域。 可以使用 Globals.FormRegions 属性访问窗体区域。 有关更多信息,请参见在运行时访问窗体区域

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

    提示

    在 Excel 2010 和 Word 2010 中已弃用智能标记。 有关更多信息,请参见智能标记概述

    提示

    Factory 属性只可用于针对 .NET Framework 4 的项目。 面向 .NET Framework 3.5 的项目在运行时使用其他方法来创建功能区控件、智能标记和宿主项。

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

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
    Handles Button1.Click
    Globals.Sheet1.NamedRange1.Value2 = Me.TextBox1.Text
End Sub
private void button1_Click(object sender, EventArgs e)
{
    Globals.Sheet1.namedRange1.Value2 = this.textBox1.Text;
}

初始化 Globals 类

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

提示

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

请参见

概念

在运行时访问功能区

在运行时访问窗体区域

宿主项和宿主控件概述

文档宿主项

工作簿宿主项

工作表宿主项

在 Office 解决方案中编写代码

修订记录

日期

修订记录

原因

2010 年 5 月

阐明了某些详细信息。

信息补充。