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 プロパティを使用します。このオブジェクトは、次のいずれかのインターフェイスを実装するクラスのインスタンスです。
たとえば、Globals.Sheet1 プロパティを使用して、Excel のドキュメント レベルのプロジェクトでユーザーが操作ウィンドウのボタンをクリックしたときに 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 が返されるかどうかを確認する必要があります。