次の方法で共有


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 クラスがすべてのホスト項目への参照で初期化されない可能性があるため、失敗することがあります。

Globals クラスはデザイン時には初期化されませんが、コントロール インスタンスはデザイナーによって作成されます。 つまり、ユーザー コントロール クラス内から Globals クラスのプロパティを使用するユーザー コントロールを作成する場合は、返されたオブジェクトを使用する前に、プロパティが null を 返すかどうかを確認する必要があります。