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

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

**适用于:**本主题中的信息适用于 Office 2013 和 Office 2010 的文档级项目和应用程序级项目。请参见按 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 或 .NET Framework 4.5项目的运行时。可以使用 Globals.Factory 属性访问此对象。此对象是一个类的实例,实现以下接口之一:

例如,当用户单击 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 解决方案中编写代码