Office プロジェクト内のオブジェクトへのグローバル アクセス

Office プロジェクトを作成すると、Visual Studio は自動的に Globals という名前のクラスをプロジェクトに生成します。 Globals クラスを使用して、プロジェクト内の任意のコードから実行時に異なる複数のプロジェクト項目にアクセスすることができます。

対象: このトピックの情報は、ドキュメントレベルのプロジェクトおよび VSTO アドイン プロジェクトに適用されます。 「Office アプリケーションおよびプロジェクトの種類別の使用可能な機能」を参照してください。

Globals クラスを使用する方法

Globals はプロジェクト内の特定の項目への参照を保持する静的クラスです。 Globals クラスを使用することで、実行時にプロジェクト内の任意のコードから次の項目へとアクセスすることができます。

  • Excel ブックまたはテンプレート プロジェクトの ThisWorkbook および Sheetn クラス。 これらのオブジェクトは、 Globals.ThisWorkbook および Sheetn プロパティを使用してアクセスすることができます。

  • Word 文書またはテンプレート プロジェクトの ThisDocument クラス。 このオブジェクトには、 Globals.ThisDocument プロパティを使用してアクセスすることができます。

  • VSTO アドイン プロジェクトの ThisAddIn クラス。 このオブジェクトには、 Globals.ThisAddIn プロパティを使用してアクセスすることができます。

  • リボン デザイナーを使用してカスタマイズした、プロジェクト内のすべてのリボン。 リボンには、 Globals.Ribbons プロパティを使用してアクセスすることができます。 詳細については、「実行時のリボンへのアクセス」を参照してください。

  • Outlook VSTO アドイン プロジェクトのすべての Outlook フォーム領域。 フォーム領域には、 Globals.FormRegions プロパティを使用してアクセスすることができます。 詳細については、「実行時のフォーム領域へのアクセス」を参照してください。

  • .NET Framework 4 または .NET Framework 4.5 をターゲットとするプロジェクトで実行時にリボン コントロールおよびホスト項目を作成できるようにするファクトリ オブジェクト。 このオブジェクトには、 Globals.Factory プロパティを使用してアクセスすることができます。 このオブジェクトは、次のいずれかのインターフェイスを実装するクラスのインスタンスです。

    たとえば、 Globals.Sheet1 プロパティを使用すると、Excel のドキュメントレベルのプロジェクトの操作ウィンドウでユーザーがボタンをクリックした場合に NamedRangeSheet1 コントロールにテキストを挿入することができます。

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

ドキュメントまたは VSTO アドインが初期化される前にコードで Globals クラスを使用しようとすると、実行時の例外がスローされる場合があります。 たとえば、クラス レベルの変数の宣言が Globals を使用することで失敗する場合があります。これは、宣言されたオブジェクトがインスタンス化される前に、 Globals クラスがすべてのホスト項目への参照を使用して初期化されない可能性があるためです。

Note

Globals クラスは設計時に初期化されることはありませんが、コントロールのインスタンスがデザイナーによって作成されます。 これは、ユーザー コントロール クラス内から Globals クラスのプロパティを使用するユーザー コントロールを作成する場合、返されるオブジェクトの使用を試みる前に、そのプロパティから null が返されるかどうかをチェックする必要があることを意味します。