ドキュメント レベルのカスタマイズのプログラミング

ドキュメント レベルのカスタマイズを使用して Microsoft Office Word または Microsoft Office Excel を拡張するときには、以下のタスクを実行できます。

  • オブジェクト モデルを使用することでアプリケーションを自動化する。

  • ドキュメントにコントロールを追加する。

  • ドキュメント内の Visual Basic for Applications (VBA) コードをカスタマイズ アセンブリから呼び出す。

  • カスタマイズ アセンブリのコードを VBA から呼び出す。

  • Microsoft Office がインストールされていないサーバー上でドキュメントの特定部分を管理する。

  • アプリケーションのユーザー インターフェイス (UI: User Interface) をカスタマイズする。

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

ドキュメント レベルのプロジェクトのコードの記述には、Visual Studio の他のプロジェクトの種類とは異なる点があります。 相違点の多くは、Office オブジェクト モデルがマネージ コードに公開される方法によって生じます。 詳細については、「Office ソリューションのコードの記述」を参照してください。

ドキュメント レベルのカスタマイズおよび Visual Studio の Office 開発ツールで作成できる他のソリューションの種類の概要については、「Office ソリューションの開発の概要」を参照してください。

ドキュメント レベルのプロジェクトで生成されたクラスの使用

ドキュメント レベルのプロジェクトを作成すると、Visual Studio によって、コードの記述に使用できるクラスがプロジェクト内に自動的に生成されます。 Word と Excel では Visual Studio が生成するクラスが異なります。

  • Word のドキュメント レベルのプロジェクトでは、生成されるクラスの既定の名前は ThisDocument です。

  • Excel のドキュメント レベルのプロジェクトでは、ブックについて 1 つ、各ワークシートについて 1 つずつクラスが生成されます。 既定では、それらのクラスの名前は次のようになります。

    • ThisWorkbook

    • Sheet1

    • Sheet2

    • Sheet3

生成されるクラスには、ドキュメントを開いたとき、または閉じたときに呼び出されるイベント ハンドラーが含まれています。 ドキュメントを開くときにコードを実行するには、Startup イベント ハンドラーにコードを追加します。 ドキュメントを閉じる直前にコードを実行するには、Shutdown イベント ハンドラーにコードを追加します。 詳細については、「Office プロジェクトのイベント」を参照してください。

生成されたクラスのデザインについて

.NET Framework 3.5 を対象とするプロジェクトでは、生成されたクラスのほとんどのメンバーおよび動作は Visual Studio Tools for Office Runtime の次のホスト項目クラスから派生します。 

  • ThisDocument: Microsoft.Office.Tools.Word.Document から派生します。

  • ThisWorkbook: Microsoft.Office.Tools.Excel.Workbook から派生します。

  • Sheetn: Microsoft.Office.Tools.Excel.Worksheet から派生します。

ホスト項目は、Office プロジェクトでオブジェクト モデル階層の最上位にある型であり、Office プライマリ相互運用機能アセンブリ (PIA) の対応するオブジェクトの動作を拡張します。 ホスト項目の詳細については、「ホスト項目とホスト コントロールの概要」を参照してください。

.NET Framework 4 を対象とするプロジェクトでは、Visual Studio Tools for Office Runtime のホスト項目型はインターフェイスであるため、生成されたクラスでは実装を派生できません。 代わりに、生成されたクラスでは、ほとんどのメンバーが次の基本クラスから派生します。

これらの基本クラスでは、メンバーへのすべての呼び出しは Visual Studio Tools for Office Runtime の対応するホスト項目インターフェイスの内部実装にリダイレクトされます。 たとえば、ThisDocument クラスの Protect メソッドを呼び出した場合、この呼び出しは Microsoft.Office.Tools.Word.DocumentBase クラスによって Visual Studio Tools for Office Runtime の Microsoft.Office.Tools.Word.Document インターフェイスの内部実装にリダイレクトされます。.NET Framework 3.5 および .NET Framework 4 を対象とするプロジェクトでの Visual Studio Tools for Office Runtime の相違点の詳細については、「Visual Studio Tools for Office Runtime の概要」を参照してください。

ホスト アプリケーションのオブジェクト モデルへのアクセス

ホスト アプリケーションのオブジェクト モデルにアクセスするには、プロジェクト内に生成されるクラスのメンバーを使用します。 これらのクラスは、それぞれが Excel または Word のオブジェクト モデルのオブジェクトに対応し、用意されているプロパティ、メソッド、およびイベントはほとんど同じです。 たとえば、Word 用のドキュメント レベルのプロジェクトの ThisDocument クラスは、Word オブジェクト モデルの Microsoft.Office.Interop.Word.Document オブジェクトとほとんど同じメンバーを提供します。

次のコード例は、Word オブジェクト モデルを使用して Word 用のドキュメント レベルのカスタマイズに含まれるドキュメントを保存する方法を示しています。 このコードは ThisDocument クラスから実行することを前提としています。

Me.Save()
this.Save();

同じ操作を ThisDocument クラスの外側から実行するには、Globals オブジェクトを使用して ThisDocument クラスにアクセスします。 たとえば、操作ウィンドウの UI に [保存] ボタンを含める場合は、このコードを操作ウィンドウのコードに追加します。

Globals.ThisDocument.Save()
Globals.ThisDocument.Save();

ThisDocument クラスは Microsoft.Office.Tools.Word.Document ホスト項目からほとんどのメンバーを取得するため、このコードで呼び出される Save メソッドは、実際は Microsoft.Office.Tools.Word.Document ホスト項目の Save メソッドです。 このメソッドは、Word オブジェクト モデルの Microsoft.Office.Interop.Word.Document オブジェクトの Save メソッドに対応します。

Word および Excel のオブジェクト モデルの詳細については、「Word オブジェクト モデルの概要」および「Excel オブジェクト モデルの概要」を参照してください。

Globals オブジェクトの詳細については、「Office プロジェクト内のオブジェクトへのグローバル アクセス」を参照してください。

ドキュメントへのコントロールの追加

ドキュメントの UI をカスタマイズするには、Windows フォーム コントロールまたはホスト コントロールをドキュメントに追加します。 さまざまな種類のコントロールを組み合わせ、コードを記述することによって、コントロールのデータへのバインド、ユーザー情報の収集、およびユーザーの操作への応答を実行できます。

ホスト コントロールは、Word および Excel のオブジェクト モデルに属する一部のオブジェクトを拡張するクラスです。 たとえば、Microsoft.Office.Tools.Excel.ListObject ホスト コントロールには、Excel の Microsoft.Office.Interop.Excel.ListObject の機能がすべて用意されています。 ただし、Microsoft.Office.Tools.Excel.ListObject ホスト コントロールには追加のイベントやデータ バインディング機能も含まれています。

詳細については、「ホスト項目とホスト コントロールの概要」および「Office ドキュメントでの Windows フォーム コントロールの概要」を参照してください。

VBA とドキュメント レベルのカスタマイズの結合

ドキュメント レベルのカスタマイズに含まれるドキュメントで VBA コードを使用することができます。 ドキュメント内の VBA コードをカスタマイズ アセンブリから呼び出すことができ、ドキュメント内の VBA コードによってカスタマイズ アセンブリ内のコードを呼び出すことができるようにプロジェクトを構成することも可能です。

詳細については、「VBA とドキュメント レベルのカスタマイズの結合」を参照してください。

サーバー上のドキュメントの管理

Microsoft Office Word または Microsoft Office Excel がインストールされていないサーバー上にあるドキュメント レベルのカスタマイズに対し、さまざまな管理タスクを行うことができます。 たとえば、ドキュメントのデータ キャッシュにあるデータへのアクセスおよび変更も可能です。 ドキュメントに関連付けられているカスタマイズ アセンブリを管理することもできます。 たとえば、アセンブリをプログラムによってドキュメントから削除してカスタマイズ コードが実行されないようにしたり、アセンブリをプログラムによってドキュメントにアタッチしたりすることができます。

詳細については、「ServerDocument クラスによるサーバー上のドキュメントの管理」を参照してください。

Microsoft Office アプリケーションのユーザー インターフェイスのカスタマイズ

ドキュメント レベルのカスタマイズを使用することにより、次の方法で Word および Excel の UI をカスタマイズできます。

Microsoft Office アプリケーションの UI をカスタマイズする方法の詳細については、「Office UI のカスタマイズ」を参照してください。

参照

概念

VBA とドキュメント レベルのカスタマイズの結合

ServerDocument クラスによるサーバー上のドキュメントの管理

ドキュメント レベルのカスタマイズにおけるネイティブな Office オブジェクトからの拡張オブジェクトの取得

Office ソリューションのコードの記述

その他の技術情報

Office ドキュメントのコントロール