次の方法で共有


Excel オブジェクト モデルの概要

更新 : 2007 年 11 月

対象

このトピックの情報は、指定された Visual Studio Tools for Office プロジェクトおよび Microsoft Office のバージョンにのみ適用されます。

プロジェクトの種類

  • ドキュメント レベルのプロジェクト

  • アプリケーション レベルのプロジェクト

Microsoft Office のバージョン

  • Excel 2003

  • Excel 2007

詳細については、「アプリケーションおよびプロジェクトの種類別の使用可能な機能」を参照してください。

Microsoft Office Excel を使用したソリューションを開発するには、Excel オブジェクト モデルで提供されるオブジェクトを操作する必要があります。ここでは、最も重要な次のクラスについて説明します。

オブジェクト モデルは、ユーザー インターフェイスとほとんど同じです。Application オブジェクトはアプリケーション全体を表し、Workbook オブジェクトにはそれぞれ Worksheet オブジェクトのコレクションが含まれています。その中でも、セルを表す主要な抽象層は Range オブジェクトです。このオブジェクトを使用して、個々のセルまたはセルのグループを操作できます。

Visual Studio Tools for Office では、これらのネイティブなオブジェクトの多くをホスト項目とホスト コントロールに拡張し、ドキュメント レベルのカスタマイズで使用することができます。これらのコントロールは、データ バインディング機能やイベントなどの追加機能を備えています。たとえば、ネイティブな Excel の Microsoft.Office.Interop.Excel.Range オブジェクトを Microsoft.Office.Tools.Excel.NamedRange コントロールに拡張すると、データにバインドしたり、イベントを公開したりできるようになります。ホスト項目とホスト コントロールの詳細については、「ドキュメント レベルのプロジェクト内の拡張されたオブジェクト」を参照してください。

ここでは、Excel オブジェクト モデルの概要を簡単に説明します。Excel オブジェクト モデル全体への理解を深めるのに役立つ資料については、「Excel オブジェクト モデル ドキュメントの使用」を参照してください。

Excel プロジェクトのオブジェクトへのアクセス

Visual Studio Tools for Office を使用して Excel 用のアプリケーション レベルのプロジェクトを新しく作成すると、Visual Studio によって ThisAddIn.vb または ThisAddIn.cs というコード ファイルが自動的に作成されます。アプリケーション オブジェクトにアクセスするには、Me.Application または this.Application を使用できます。

Visual Studio Tools for Office を使用して Excel 用のドキュメント レベルのプロジェクトを新しく作成する場合は、Excel ブック プロジェクトまたは Excel テンプレート プロジェクトのどちらを新しく作成するかを選択できます。ドキュメント プロジェクトとテンプレート プロジェクトのどちらを作成した場合も、Visual Studio Tools for Office によって自動的に新しい Excel プロジェクトに次のコード ファイルが作成されます。

Visual Basic

C#

ThisWorkbook.vb

ThisWorkbook.cs

Sheet1.vb

Sheet1.cs

Sheet2.vb

Sheet2.cs

Sheet3.vb

Sheet3.cs

グローバル クラスの Globals を使用して、各クラスの外部から ThisWorkbook、Sheet1、Sheet2、または Sheet3 にアクセスできます。詳細については、「Visual Studio Tools for Office プロジェクト内のオブジェクトへのグローバル アクセス」を参照してください。次の例では、コードが Sheet クラスまたは Workbook クラスのどちらに含まれていても、Sheet1 の PrintPreview メソッドが呼び出されます。

Globals.Sheet1.PrintPreview()
Globals.Sheet1.PrintPreview(missing);

Excel ドキュメントのデータは高度に構造化されているため、オブジェクト モデルは階層的で単純明快です。Excel には、操作可能なオブジェクトが多数用意されていますが、使用できるオブジェクトのうち、非常に小さいサブセットに焦点を絞ることで、オブジェクト モデルを理解しやすくなります。これらのオブジェクトには、次の 4 つが含まれます。

  • アプリケーション

  • ブック

  • ワークシート

  • 範囲

Excel に対して行うほとんどの作業では、これらの 4 つのクラスとそのメンバを使用します。

Application オブジェクト

Excel の Application オブジェクトは、Excel アプリケーション自体を表します。Application オブジェクトは、実行中のアプリケーション、そのインスタンスに適用されるオプション、およびインスタンス内で開いている現在のユーザー オブジェクトに関する多くの情報を公開します。

wss56bz7.alert_note(ja-jp,VS.90).gifメモ :

Excel の Application オブジェクトの EnableEvents プロパティを false に設定しないでください。false に設定すると、Excel でイベント (ホスト コントロールのイベントなど) が生成されなくなります。

Workbook オブジェクト

Microsoft.Office.Interop.Excel.Workbook クラスは、Excel アプリケーション内の 1 つのブックを表します。

Visual Studio Tools for Office に用意された Microsoft.Office.Tools.Excel.Workbook クラスによって Microsoft.Office.Interop.Excel.Workbook クラスが拡張されます。これにより、データ バインディング機能や追加のイベントに加え、Workbooks コレクションのすべてのメンバにアクセスできます。

Worksheet オブジェクト

Microsoft.Office.Interop.Excel.Worksheet オブジェクトは、Worksheets コレクションのメンバです。Microsoft.Office.Interop.Excel.Worksheet オブジェクトのプロパティ、メソッド、およびイベントの大半は、Application クラスや Microsoft.Office.Interop.Excel.Workbook クラスが提供するメンバとまったく同じか、または同様のものです。

Excel には、Microsoft.Office.Interop.Excel.Workbook オブジェクトのプロパティとして Sheets コレクションが用意されていますが、Sheet クラスはありません。Sheets コレクションの各メンバは、Microsoft.Office.Interop.Excel.Worksheet オブジェクトと Microsoft.Office.Interop.Excel.Chart オブジェクトのいずれかです。

ドキュメント レベルのカスタマイズには、Visual Studio Tools for Office によって Microsoft.Office.Tools.Excel.Worksheet ホスト項目が提供され、Sheet1、Sheet2、Sheet3 という 3 つのインスタンスが新しいプロジェクト内に作成されます。シートへのアクセスは Globals 参照によって行います。Visual Studio Tools for Office は Microsoft.Office.Interop.Excel.Worksheet オブジェクトを拡張して、Microsoft.Office.Tools.Excel.Worksheet ホスト項目を提供します。

Range オブジェクト

Microsoft.Office.Interop.Excel.Range オブジェクトは、Excel アプリケーション内で最も使用されるオブジェクトです。Excel 内の任意の範囲を操作するには、まず、目的の範囲を Range オブジェクトとして表現し、その範囲のメソッドとプロパティを操作する必要があります。Range オブジェクトは、セル、行、列、1 つ以上のセルのブロックを含むセルの選択範囲 (連続または非連続)、または複数のシートにまたがるセルのグループを表します。

ドキュメント レベルのカスタマイズについては、Visual Studio Tools for Office に Microsoft.Office.Tools.Excel.NamedRangeMicrosoft.Office.Tools.Excel.XmlMappedRange という 2 つの範囲ホスト コントロールが導入されています。ホスト コントロールの詳細については、「ホスト項目とホスト コントロールの概要」を参照してください。

ドキュメント レベルのプロジェクト内の拡張されたオブジェクト

Excel オブジェクト モデルによって提供されるネイティブ オブジェクトと、Visual Studio Tools for Office によって提供される拡張されたオブジェクト (ホスト項目やホスト コントロール) との違いを理解することは重要です。どちらのオブジェクトもドキュメント レベルのプロジェクトで使用できます。

相違点は、次の 4 つに分類されます。

  • デザイン時。拡張された Excel オブジェクトをデザイン時に追加すると、ホスト項目およびホスト コントロールとして自動的に作成されます。たとえば、デザイナでワークシートにリストを追加した場合、コードが自動的に生成されて、リストが Microsoft.Office.Tools.Excel.ListObject コントロールに拡張されます。

  • 実行時。ホスト項目は実行時には自動的に作成されません。ブック、ワークシート、またはグラフ シートを実行時に追加した場合、これらはネイティブな Excel オブジェクトであり、ホスト項目で提供される追加の機能は備わっていません。ホスト コントロールの大半はプログラムによって追加できます。詳細については、「ホスト項目とホスト コントロールの概要」を参照してください。

  • データ バインディングとイベント。ホスト項目およびホスト コントロールは、ネイティブ オブジェクトが持っていないデータ バインディング機能およびイベントを備えています。

  • 型。ネイティブな Excel オブジェクトは、Microsoft.Office.Interop.Excel の名前空間で定義された型を使用します。ホスト項目とホスト コントロールは、Microsoft.Office.Tools.Excel の名前空間で定義された集約型を使用します。

Excel オブジェクト モデル ドキュメントの使用

Excel オブジェクト モデルで使用できるクラスの詳細については、以下のドキュメントを参照してください。

最初のリンク先では、Excel のプライマリ相互運用機能アセンブリのクラスやインターフェイスに関する情報を提供しています。その他のリンク先では、Visual Basic for Applications (VBA) コードに公開される Excel オブジェクト モデルに関する情報を提供しています。Visual Studio Tools for Office を使用している開発者にとって、各資料には一長一短があります。

プライマリ相互運用機能アセンブリのリファレンス

この資料には、Visual Studio Tools for Office プロジェクトで使用できる、Excel のプライマリ相互運用機能アセンブリにあるすべての型についての説明が記載されています。ただし、この資料には次のようなデメリットがあります。

  • 説明で取り上げられているのは、Excel 2003 のプライマリ相互運用機能アセンブリの型だけです。Excel 2007 のプライマリ相互運用機能アセンブリで導入された新しい型やメンバについては、Excel 2007 用の VBA リファレンスを参照する必要があります。

  • 現時点では、コード例は提供されていません。

VBA リファレンス

VBA リファレンス内のオブジェクトとメンバはすべて、Visual Studio Tools for Office プロジェクトで使用するプライマリ相互運用機能アセンブリのクラスとメンバに対応します。たとえば、Excel VBA ドキュメントに記載されている Worksheet オブジェクトは、プライマリ相互運用機能アセンブリの Microsoft.Office.Interop.Excel.Worksheet クラスに相当します。

VBA リファレンスには、次のようなメリットがあります。

  • Excel 2007 と Excel 2003 の両方のオブジェクト モデルに関する説明があります。

  • ほとんどのメンバについてコード例が記載されています。

VBA リファレンスのデメリットは以下のとおりです。

  • 提供されている構文とコード例は、VBA に関するものだけです。紹介されているコード例を Visual Studio Tools for Office プロジェクトで使用するには、VBA コードを Visual Basic または Visual C# に変換する必要があります。

プライマリ相互運用機能アセンブリの追加の型

プライマリ相互運用機能アセンブリには、VBA では利用できない型が多数あります。そうした追加の型は、Excel の COM ベースのオブジェクト モデルに含まれるオブジェクトをマネージ コードに変換する場合に役立ちますが、コード内で直接使用することを目的としたものではありません。

詳細については、「Overview of Classes and Interfaces in the Office Primary Interop Assemblies」を参照してください。

参照

概念

Excel ソリューション

Excel のアプリケーション レベルのアドインの開発

セルの操作

範囲の使用

ワークシートの操作

ブックの操作

Excel 用ドキュメント レベルのカスタマイズの開発

Word オブジェクト モデルの概要

ホスト項目とホスト コントロールの概要

ホスト項目およびホスト コントロールのプログラム上の制限事項

Office ソリューションの省略可能なパラメータについて

その他の技術情報

Excel のホスト コントロール