オブジェクトおよびオブジェクト モデルとは

https://msdn.microsoft.com/ja-jp/library/aa671793.aspx
Microsoft Office 2000/Visual Basic プログラマーズ ガイド   

アプリケーションは基本的に構成要素と機能で構成されています。構成要素とは、アプリケーション内の情報、つまり、文書、ワークシート、テーブル、またはスライドおよびその中に含まれる情報を指します。また、構成要素はウィンドウのサイズ、グラフィックスの色、または文字のフォント サイズなど、アプリケーションに含まれる各要素の属性に関する情報でもあります。機能とは、アプリケーションの構成要素に対して行うすべての操作を指します。たとえば、アプリケーション内の構成要素を開く、閉じる、追加する、削除する、送信する、コピーする、貼り付ける、編集する、書式を設定するなどの操作です。

Visual Basic 言語は、アプリケーションを構成する構成要素および機能を、"オブジェクト" と呼ばれる独立した単位として理解します。ほとんどの場合、アプリケーションによって Visual Basic に公開されるオブジェクト セットは、アプリケーションのユーザー インターフェイスを使用して操作可能なすべてのオブジェクトに対応しています。Access のデータベース、テーブル、クエリ、フォーム、およびレポート、Excel のブック、ワークシート、およびセル範囲、Word の文書、セクション、段落、文、および単語、Microsoft Outlook のメッセージ、予定、および連絡先、Microsoft PowerPoint® のプレゼンテーションおよびスライド、FrontPage で作成した Web およびページなど、これらの多数のオブジェクトについては既に理解していることを前提とします。

アプリケーションのユーザー インターフェイスで実行可能な動作が、VBA のオブジェクトとして公開されない場合もあります。たとえば、VBA プロジェクトに対してデジタル署名を使用する場合、対応するオブジェクトはありません。一方、コントロールが特定される多くのオブジェクトをユーザー インターフェイスを通じて使用することができます。たとえば、Assistant オブジェクトを使用して、ユーザー インターフェイスを通じて直接公開できない Office アシスタントの特定のアニメーションをプログラムで実行することができます。また、オブジェクトの中には、ユーザー インターフェイスを持たないアプリケーションの下層機能を制御するものもあります。たとえば、Err オブジェクトを使用してエラーをトラップし、プログラムの動作が停止する、または次に実行する動作についてユーザーを困惑させるような状況を予期することができます。

アプリケーションによって公開されるオブジェクトは、階層関係に基づいて配置されています。Office アプリケーションで最上位のオブジェクトは、アプリケーション自体を示す Application オブジェクトです。Application オブジェクトが存在する場合、つまりそのアプリケーションのインスタンスが実行されている場合にのみ、Application オブジェクトにはアクセス可能なほかのオブジェクトが含まれます。たとえば、Excel の Application オブジェクトには Workbook オブジェクトが、Word の Application オブジェクトには Document オブジェクトが含まれています。Document オブジェクトの存在は Word の Application オブジェクトの存在が前提であるため、Document オブジェクトは Application オブジェクトの "子" と呼ばれます。逆に、Application オブジェクトは Document オブジェクトの "親" になります。

子オブジェクトの多くには、さらに子オブジェクトが含まれています。たとえば、Excel の Workbook オブジェクトには Worksheets オブジェクトが含まれるため、Workbook オブジェクトは Worksheets オブジェクトの親ということになります。Worksheets オブジェクトは、オブジェクト セットである "コレクション" と呼ばれる特殊なオブジェクトで、ブックに含まれるすべてのワークシートを指します。この場合、各ワークシートは逆にコレクション内では個別の Worksheet オブジェクトとして表されます。親オブジェクトには複数の子オブジェクトを含めることができます。たとえば、Word の Window オブジェクトには Document、Panes、Selection、および View オブジェクトが子オブジェクトとして含まれます。また、同一名の子オブジェクトが複数の親オブジェクトに属する場合もあります。たとえば、Word では、Application オブジェクトと Document オブジェクトの両方に Windows コレクションが子オブジェクトとして含まれます。ただし、複数の子オブジェクトに同一名が付いている場合でも、通常、その機能は親オブジェクトによって異なります。たとえば、Application オブジェクトの Windows コレクションにはアプリケーションで開いているすべての文書ウィンドウが含まれ、Document オブジェクトの Windows コレクションには特定の文書を表示するウィンドウのみが含まれます。

4.1 Word オブジェクト モデルの Windows コレクション部分

Office アプリケーションおよび共有コンポーネントのオブジェクト モデルの図は、『』、またはアプリケーションの Visual Basic リファレンス ヘルプで、「Microsoft Office のオブジェクト」、「Microsoft Access のオブジェクト」、「Microsoft Excel のオブジェクト」、「Microsoft FrontPage のオブジェクト」、「Microsoft Outlook のオブジェクト」、「Microsoft Word のオブジェクト」、または「Microsoft PowerPoint のオブジェクト」を参照してください。また、VBA オブジェクトの Webサイト (http://www.inquiry.com/objects/) で、すべての Office アプリケーション、および AutoCAD や Visioなどの VBA およびオートメーションをサポートするほかのアプリケーションのオブジェクト モデルを参照することもできます。

階層の各オブジェクトには、子オブジェクトに加えて、オブジェクトとその子オブジェクトすべてに適用される構成要素と機能が含まれています。ネストされたオブジェクトの階層でオブジェクトの位置が上位になるほどオブジェクトに含まれる子オブジェクトの数が多くなり、構成要素と機能の適用範囲が広がります。たとえば、Excel では、アプリケーション ウィンドウのサイズとアプリケーションを終了する機能は Application オブジェクトに含まれ、ブックのファイル名と形式、およびブックを保存する機能は Workbook オブジェクトに含まれ、Worksheet オブジェクト名とワークシートを追加および削除する機能は Worksheets コレクションに含まれています。

通常、Excel ワークシートの値または Word 文書のテキストなど、ファイルに含まれる実際の内容に到達するには、オブジェクト階層のレベルをいくつか移動する必要があります。これは、特定の内容の適用範囲がアプリケーションの特定の機能に属するためです。たとえば、ワークシートの特定のセルに含まれる値は、ワークシートのすべてのセルには適用されないため、その値を Worksheet オブジェクトに直接保存することはできません。

オブジェクトによって公開される構成要素および機能を操作するには、そのオブジェクトの "プロパティ" および "メソッド" を使用します。色、次元、状態などのオブジェクトの特徴を指定または変更する場合はプロパティを使用します。たとえば、Excel の Worksheet オブジェクトの Visible プロパティでは、ワークシートをユーザーが表示できるかどうかを指定することができます。オブジェクトで特定の動作を実行するにはメソッドを使用します。たとえば、Word の Document オブジェクトの PrintOut メソッドは文書の印刷に使用されます。プロパティおよびメソッドの使用については、この章の「プロパティおよびメソッドを使用する」を参照してください。

また、オブジェクトには "イベント" に応答するものがあります。イベントは、マウスをクリックする、キーを押す、データを変更する、文書またはフォームを開くなど、ユーザーが通常行う動作です。ただし、プログラム コードまたはシステムが実行する動作も含まれます。"イベント プロシージャ" と呼ばれる、イベントの発生時に実行されるコードを記述することもできます。たとえば、フォームの Open イベントにコードを記述して、フォームを開くとサイズと位置が確定するように設定できます。イベントを使用する場合の詳細ついては、この章の「イベントを使用する」を参照してください。

アプリケーションの構成要素および機能は、アプリケーションのオブジェクト モデルのオブジェクト間で分割されています。オブジェクト モデルの階層に含まれるすべてのオブジェクトを包括すると、Visual Basic に公開される、アプリケーションのすべての構成要素および機能となります。分離した状態のオブジェクトは、構成要素および機能の特定のエリアへのアクセスを可能にします。オブジェクトの特徴を確認または設定するには、オブジェクトのプロパティを表示または設定します。オブジェクトで動作を実行する場合、またはオブジェクトを使用して動作を実行する場合は、オブジェクトのメソッドを使用します。また、オブジェクトには、ユーザーの動作によって発生するイベントが含まれるものがあり、その動作に応答して実行されるコードを記述することも可能です。

Outlook のオブジェクト モデルを使用する

Outlook のプログラミング モデルは、ほかの Office アプリケーションとは異なります。次の 3 種類の方法により Outlook のオブジェクト モデルで作業することができます。

  • ローカル プロジェクト ファイル、または Outlook のローカル インストールに関連している COM アドインから実行される VBA コードを記述する。

  • メッセージ、予定などのアイテムの表示に使用される Outlook フォーム内で使用可能なネイティブ スクリプト環境を使用する。

  • ほかの Office アプリケーションおよび VBA アプリケーションをサポートするアプリケーションからオートメーションを使用して Outlook で作業する。

ローカル プロジェクト ファイル (VBAProject.OTM) から実行される VBA コードを記述するには、Outlook を開き、[ツール] メニューの [マクロ] にある [Visual Basic Editor] をクリックします。Outlook では、Visual Basic Editor を使用して、Outlook のそのインストールのみから実行可能なコードを記述できます。たとえば、コードを ThisOutlookSession モジュールに追加し、ItemSend、NewMail、OptionsPagesAdd、Quit、Reminder、Startup などの Application オブジェクト イベントに対するコードを記述できます。ほかの Office アプリケーションのように、コード モジュール、クラス モジュール、およびユーザー フォームをほかのカスタム ソリューションに追加したり、プロシージャをメニュー項目またはツール バー ボタンから実行したりすることができます。

ローカルの Outlook VBA プロジェクトを使用して作成したソルーションを配布するには、モジュールおよびオブジェクトをファイルにエクスポートしてから、Outlook がインストールされている別のコンピュータにインポートします。より適したソリューションの配布方法は、Microsoft Office 2000 Developer または Microsoft Visual Basic 6.0 で使用可能な COM アドイン デザイナを使用し、COM アドインとしてソリューションをコンパイルしてインストールする方法です。COM アドインの作成については、第 11 章「アドイン、テンプレート、ウィザード、およびライブラリ」を参照してください。Outlook でのVBA の使用については、第 5 章「Microsoft Outlook のオブジェクトを使用する」および「Office アプリケーションを使用する」を参照してください。

Outlook アイテム内で実行するプログラムを記述するには、Outlook スクリプト エディタを使用します。Outlook スクリプト エディタを使用することにより、Outlook フォーム (メッセージ、予定、連絡先など、Outlook で開くことのできるすべてのアイテム) で Microsoft Visual Basic® Scripting Edition (VBScript) がサポートされます。ただし、VBScript は VBA のサブセットであるため、実行可能な動作に制限があります。たとえば、VBScript がサポートするデータ型はバリアント型 (Variant) のみで、VBA のキーワードと機能の多くはサポートされていません。スクリプト記述の詳細については、第 12 章「Web テクノロジを使用する」を参照してください。Outlook スクリプト エディタにアクセスするには、フォーム デザイン モードを使用します。

Outlook スクリプト エディタを開くには

  1. フォームのベースとして使用する Outlook アイテムを開きます。

  2. [ツール] メニューの [フォーム] をポイントし、[このフォームのデザイン] をクリックします。既存のカスタム フォームを使用する場合は、[ツール] メニューの [フォーム] をポイントし、[フォームのデザイン] をクリックしてフォームを選択します。

  3. フォームのデザインに変更を加えます。

  4. [フォーム] メニューの [コードの表示] をクリックします。

Outlook フォームでスクリプトを作成する作業では、ほとんどの場合はイベント プロシージャを記述します。たとえば、フォームの Open イベントに対してイベント プロシージャを記述し、特定のタブ ページを表示して特定のフィールドに既定値を入力するように初期化することができます。イベント ハンドラ スタブを Outlook スクリプト エディタに追加するには、[スクリプト] メニューの [イベント ハンドラ] をクリックし、作業するイベントを選択して [追加] をクリックします。Outlook オブジェクト モデルの詳細については、Outlook スクリプト エディタの [ヘルプ] メニューで [Microsoft Outlook オブジェクト ライブラリ ヘルプ] をクリックしてください。

別のアプリケーションから Outlook で作業を行う場合、事前バインディングまたは実行時バインディングのいずれかでオートメーション コードを使用できます。事前バインディングを使用するには、Microsoft Outlook 9.0 オブジェクト ライブラリへの参照を確立し、Outlook の Application オブジェクトを参照するオブジェクト変数を宣言および初期化します。次はその例です。

Dim olApp As Outlook.Application
Set olApp = New Outlook.Application

同様に、オブジェクト型として宣言されるオブジェクト変数を CreateObject 関数で使用して、実行時バインディングされたオブジェクト変数を初期化します。次はその例です。

Dim olApp As Object
Set olApp = CreateObject("Outlook.Application")

いずれの方法でも、このオブジェクト変数を使用して、Outlook オブジェクト モデルのほかのオブジェクト、プロパティ、メソッド、およびイベントで作業することができます。

Outlook でオートメーション コードを使用する場合の詳細については、この章の「その他の Office アプリケーションを自動化するオブジェクト変数を作成する」、第 5 章の「Microsoft Outlook のオブジェクトを使用する」、および「Office アプリケーションを使用する」を参照してください。

表示: