次の方法で共有


InfoPath 2007 オブジェクト モデルと開発環境を理解する

Microsoft Office InfoPath 2007 は、フォーム テンプレートでのビジネス ロジック開発用に 3 種類のプログラミング モデルをサポートしており、マネージ コードからの外部の自動化もサポートしています。

Microsoft InfoPath Forms Services 2007 および Microsoft Office SharePoint Server 2007 で使用できる、InfoPath Forms Services と呼ばれる同じフォーム機能により、サーバー タスクを自動化するためのオブジェクト モデルが提供されます。

Office InfoPath 2007 は 3 つの開発環境といくつかのプログラミング言語をサポートしています。これらについては、このトピック内で後で説明します。使用する開発環境は、使用する必要のあるプログラミング モデルによっても異なります。

InfoPath のプログラミング モデル

Office InfoPath 2007 は、フォーム テンプレートでのビジネス ロジック開発用に、次の 3 種類のプログラミング モデルをサポートしています。

  • COM およびスクリプト オブジェクト モデル

  • InfoPath 2003 互換のマネージ コード オブジェクト モデル

  • 新しい InfoPath マネージ コード オブジェクト モデル

また、Office InfoPath 2007 は、外部アプリケーションから InfoPath を自動化するためのマネージ コードを書く手段も提供しています。

Microsoft InfoPath Forms Services 2007 と InfoPath Forms Services は、サーバー タスクを自動化するためのオブジェクト モデルを提供します。このようなタスクには、サーバー管理者のアクセス許可が必要となる、サーバー上で実行されているコードからのフォーム テンプレートの検証とアップロードなどが含まれます。

COM およびスクリプト オブジェクト モデル

COM およびスクリプト オブジェクト モデルは、C:\Program Files\Microsoft Office\Office12 フォルダにある、以下のダイナミック リンク ライブラリ (*.dll) ファイルに実装されています。

ダイナミック リンク ライブラリ 説明

IPEDITOR.DLL

InfoPath フォーム編集ラインタイム用に COM ベースのオブジェクト モデルを提供します。JScript または VBScript で書かれたビジネス ロジックから呼び出せるオブジェクトおよびメンバを公開します。また、InfoPath アプリケーションを自動化するために COM コンポーネントおよびアプリケーションから呼び出せる Application オブジェクトと XDocuments コレクションのメソッドも公開します。

IPDESIGN.DLL

カスタム フォーム コンバータを作成するための COM ベースのインターフェイスと、Excel および Word で作成されたフォームのデザインをインポートして新しい InfoPath フォーム テンプレートを作成するための ExcelImporter オブジェクトと WordImporter オブジェクトを提供します。

メモメモ :

COM およびスクリプト オブジェクト モデルに対してスクリプト言語 (JScript および VBScript) を使用したビジネス ロジックの作成は InfoPath クライアントでもサポートされていますが、スクリプトで書かれたビジネス ロジックは、InfoPath Forms Services で InfoPath Forms Services 2007 または Microsoft Office SharePoint Server 2007 に展開されたブラウザ対応のフォーム テンプレートではサポートされていません。ブラウザ対応のフォーム テンプレートは、カスタム ビジネス ロジック用に、新しい InfoPath マネージ コード オブジェクト モデルを使用する必要があります。

スクリプトと COM 自動化の作業の詳細については、「InfoPath 開発者用リファレンス」を参照してください。このマニュアルは、Office InfoPath 2007 の [ヘルプ] メニューの [Microsoft Office InfoPath ヘルプ] をクリックすると表示されます。

InfoPath 2003 互換のマネージ コード オブジェクト モデル

InfoPath 2003 互換のマネージ コード オブジェクト モデルは、マネージ コードを使用してフォーム テンプレートでビジネス コードを書くために、Microsoft Office InfoPath 2003 Toolkit for Visual Studio .NET と関連して InfoPath 2003 Service Pack 1 で最初に提供されました。このオブジェクト モデルは、InfoPath 2003 との互換性を維持するため、今も Office InfoPath 2007 でサポートされています。

このオブジェクト モデルのクラスとメンバは、Microsoft.Office.Interop.InfoPath.SemiTrust 名前空間によって公開されます。このオブジェクト モデルは、C:\Program Files\Microsoft Office\Office12 フォルダにある以下のアセンブリ ファイル内に実装されています。

アセンブリ 説明

Microsoft.Office.Interop.InfoPath.SemiTrust.dll

C# または Visual Basic .NET を使用して書かれたフォーム テンプレート ビジネス ロジックのための、InfoPath COM オブジェクト モデルに対する COM 相互運用を提供します。

メモメモ :

Microsoft.Office.Interop.InfoPath.SemiTrust アセンブリによって提供される COM 相互運用マネージ コード オブジェクト モデルを使用したビジネス ロジックの作成は今も Office InfoPath 2007 でサポートされていますが、このオブジェクト モデルを使用して書かれたビジネス ロジックは、InfoPath Forms Services を使用して InfoPath Forms Services 2007 または Microsoft Office SharePoint Server 2007 に展開されたブラウザ対応のフォーム テンプレートではサポートされていません。ブラウザ対応のフォーム テンプレートは、カスタム ビジネス ロジック用に、新しい InfoPath マネージ コード オブジェクト モデルを使用する必要があります。

メモメモ :

[フォームのオプション] ダイアログ ボックスの [プログラミング] カテゴリで [フォーム テンプレートのコード言語] を [C# (InfoPath 2003 互換)] または [Visual Basic (InfoPath 2003 互換)] に設定することで、InfoPath 2003 と互換性を持つフォーム テンプレート プロジェクトを作成した場合は、既定で、すべての呼び出しが、下位互換性を持つ Microsoft.Office.Interop.InfoPath.SemiTrust 名前空間のメンバとなります。しかし、下位互換性が必要ない場合は、Microsoft.Office.Interop.InfoPath.SemiTrust 名前空間の新しいオブジェクト モデル メンバを使用できます。詳細については、「[方法] InfoPath 2003 と互換性のない Microsoft.Office.Interop.InfoPath.SemiTrust のメンバを使用する方法」を参照してください。

新しい InfoPath マネージ コード オブジェクト モデル

新しい InfoPath マネージ コード オブジェクト モデルは 2 つのアセンブリで実装されており、どちらも Microsoft.Office.Infopath.dll という名前です。

1 つのバージョンのアセンブリには、InfoPath Forms Services 2007 または Microsoft Office SharePoint Server 2007 で InfoPath Forms Services を使用して実行されるブラウザ対応のフォーム テンプレートとして展開された、フォーム テンプレートのビジネス ロジックでサポートされている型とメンバのみを含む、InfoPath オブジェクト モデルのサブセットが実装されています。このアセンブリに対して書かれたビジネス ロジックを含むフォーム テンプレートは、InfoPath および Web ブラウザ内で開き、実行することができます。

もう 1 つのバージョンのアセンブリには、ブラウザ対応のフォーム テンプレートのビジネス ロジックではサポートされていない機能を提供する追加の型とメンバを含む、完全な InfoPath オブジェクト モデルが実装されています。このアセンブリ内で InfoPath 特有のクラスとメンバに対して書かれたビジネス ロジックを含むフォーム テンプレートは、InfoPath 内でのみ開き、実行することができます。

メモメモ :

フォーム テンプレートが InfoPath または Web ブラウザのどちらの環境で実行されるかを指定するために、Environment クラスのプロパティを使用する条件付きロジックを書くことができます。この条件付きロジックを使用すると、ビジネス ロジックを、Web ブラウザで動作するコードと、InfoPath でのみ動作するクラスおよびメンバに対して書かれたコードの間で分岐することができます。詳細については、「[方法] 実行時の環境を指定する条件付きロジックを書く方法」を参照してください。

InfoPath がフォーム テンプレートのビジネス ロジックの追加やコンパイル時にどのアセンブリを使用するかは、新しいフォームのデザインを開始する際に、[フォーム テンプレートのデザイン] ダイアログ ボックスで [ブラウザ互換の機能のみを有効にする] チェック ボックスをオンにしたかどうかによって異なります。この設定を変更するには、[互換性] カテゴリ内の [フォームのオプション] ダイアログ ボックスで、必要に応じて [ブラウザまたは InfoPath で開くことができるフォーム テンプレートをデザインする] チェック ボックスをオンまたはオフにします。

この両バージョンのオブジェクト モデルのクラスとメンバは、Microsoft.Office.InfoPath 名前空間によって公開されます。これらのアセンブリは、Office InfoPath 2007 インストールの以下のディレクトリにあります。

アセンブリ 説明

Microsoft.Office.InfoPath.dll (C:\Program Files\Microsoft Office\Office12\InfoPathOM ディレクトリ)

InfoPath Forms Services を実行しているサーバーに展開されるフォーム テンプレートのビジネス ロジックで実行される型とメンバのみを含むオブジェクト モデルのサブセット ([ブラウザ互換の機能のみを有効にする] チェック ボックスまたは [ブラウザまたは InfoPath で開くことができるフォーム テンプレートをデザインする] チェック ボックスがオンになっている状態)。

Microsoft.Office.InfoPath.dll (C:\Program Files\Microsoft Office\Office12\ ディレクトリ)

InfoPath Forms Services 2007 に展開されるフォーム テンプレートのビジネス ロジックで実行されない型とメンバも含む "完全な" オブジェクト モデル ([ブラウザ互換の機能のみを有効にする] チェック ボックスまたは [ブラウザまたは InfoPath で開くことができるフォーム テンプレートをデザインする] チェック ボックスが選択されていない状態)。

メモメモ :

上記で参照されるアセンブリは、デザイン時に、コードの作成とコンパイルに使用されます。実行時に、フォーム テンプレートが InfoPath 内で開かれるときに使用されるアセンブリは、InfoPath がインストールされているコンピュータのグローバル アセンブリ キャッシュ (GAC) にあります。InfoPath Forms Services を実行しているサーバーから Web ブラウザ内でフォーム テンプレートが開かれるときは、使用されるアセンブリはサーバーにあります。

2 つのアセンブリがあることで、ビジネス ロジックに、サポートされるフォーム エディタ (Web ブラウザまたは InfoPath) に適したオブジェクト モデル メンバへの呼び出しのみが含まれることが保証されます。たとえば、コードを編集する際、ステートメント完了やインライン ドキュメントなどの IntelliSense 機能は、対象となる 1 つ以上のエディタに適切なオブジェクト モデル メンバに対してのみ表示および動作します。

Microsoft.Office.InfoPath アセンブリによって公開される新しいマネージ コード オブジェクト モデルのどちらのバージョンでも、ビジネス ロジック内での XML データ ストアのナビゲーションと更新には、System.Xml.XPath.XPathNavigator クラスのメンバへの呼び出しが必要です。InfoPath 2003 での XML データ ストアのナビゲーションと更新には、JScript または VBScript で作成したビジネス ロジックの場合は MSXML 5.0 クラスのメンバの呼び出しが必要となり、C# または Visual Basic と Microsoft Office InfoPath 2003 Toolkit for Visual Studio .NET で作成したビジネス ロジックの場合は Microsoft.Office.Interop.InfoPath.SemiTrust 名前空間によって提供される MSXML 5.0 クラスのラッパーを通じた呼び出しが必要となります。

XPathNavigator クラスのメンバを使用することで、同じビジネス ロジック コードが、InfoPath クライアントと、Web ブラウザ内で InfoPath Forms Services を使用して InfoPath Forms Services 2007 または Microsoft Office SharePoint Server 2007 から開かれた Web 対応フォームの両方で開かれるフォーム テンプレートの DOM 操作をサポートすることができます。

InfoPath マネージ コード フォーム テンプレートのビジネス ロジックでの XPathNavigator クラスのメンバを操作する方法の詳細については、「[方法] XPathNavigator クラスおよび XPathNodeIterator クラスを操作する方法」を参照してください。

マネージ コードから InfoPath を自動化する

マネージ コードを使用してビジネス ロジックを作成するのに加え、外部アプリケーション内で実行されるマネージ コードを使用して InfoPath を自動化することもできます。この機能と、コードを書くのに必要なアセンブリは、InfoPath 2003 Service Pack 1 で最初に導入されました。InfoPath の自動化に使用するオブジェクトとメンバは、Office InfoPath 2007 の外部自動化コードを書く際の追加機能を提供するために更新されました。

外部自動化に使用するクラスとメンバは、Microsoft.Office.Interop.InfoPath 名前空間と Microsoft.Office.Interop.InfoPath.Xml 名前空間を使用して公開されます。自動化コードを書くために必要なアセンブリ ファイルは、C:\Program Files\Microsoft Office\Office12 フォルダにあります。

アセンブリ 説明

Microsoft.Office.Interop.InfoPath.dll

C# または Visual Basic .NET を使用して書かれた外部自動化コードのための、InfoPath COM オブジェクト モデルに対する COM 相互運用を提供します。

Microsoft.Office.Interop.InfoPath.Xml.dll

C# または Visual Basic .NET を使用して書かれた外部自動化コードのための、MSXML 5.0 for XML DOM 操作に対する COM 相互運用を提供します。

外部アプリケーションからマネージ コードを使用して InfoPath アプリケーションを自動化するためだけに使用される、Microsoft.Office.Interop.InfoPath 名前空間と Microsoft.Office.Interop.InfoPath.Xml 名前空間によって提供されるオブジェクト モデルの詳細については、Microsoft Visual Studio 2005 Tools for the 2007 Microsoft Office System と一緒にインストールされるドキュメントの「他のアプリケーションから InfoPath を自動化する」を参照してください。

Office Forms サービス オブジェクト モデル

InfoPath Forms Services 2007 または InfoPath Forms Services の管理タスクを自動化するマネージ コード オブジェクト モデルは、InfoPath Forms Services 2007 または Microsoft Office SharePoint Server 2007 のインストール ディレクトリの <drive>:\Program Files\Microsoft Office Server\12.0\Bin にある Microsoft.Office.InfoPath.Server.dll 内に実装されています。

アセンブリ 説明

Microsoft.Office.InfoPath.Server.dll

ブラウザ対応のフォーム テンプレートを、アップロード、アクティブ化、非アクティブ化するなどの Office Form Server タスクを自動化するオブジェクト モデル。

InfoPath Forms Services オブジェクト モデルの詳細については、MSDN にある Microsoft InfoPath Forms Services 2007 ソフトウェア開発キット (SDK) を参照してください。

InfoPath 開発環境

Office InfoPath 2007 フォーム テンプレートのビジネス ロジックの開発は、次の 3 つの開発環境のいずれかを使用して実行できます。

  • Microsoft Script Editor

  • Microsoft Visual Studio Tools for Applications (VSTA)

  • Microsoft Visual Studio 2005 Tools for the 2007 Microsoft Office System または Visual Studio 2008 と Visual Studio Tools for Office を使用して統合された InfoPath デザイン モード

使用する開発環境は、作成するビジネス ロジックの対象となるプログラミング言語とオブジェクト モデルによっても異なります。使用する開発環境は、以下の情報を参考にして決定してください。

Microsoft Script Editor (MSE)

InfoPath 2003 の場合と同様に、InfoPath COM オブジェクト モデルに対して書かれた JScript または VBScript コードを使用してビジネス ロジックを書くには、既定で Office InfoPath 2007 アプリケーションと共にインストールされ統合されている Microsoft Script Editor (MSE) を使用します。この開発環境の機能は、基本的に、InfoPath 2003 のものと同じです。MSE で JScript または VBScript を使用してビジネス ロジックを開発するには、デザイン モードでフォーム テンプレートを開きます。[フォームのオプション] ダイアログ ボックスを開き、[プログラミング] カテゴリを選択して、フォーム テンプレートの [プログラミング言語] として [JScript] または [VBScript] を選択します。

Visual Studio Tools for Applications (VSTA)

お使いのコンピュータに Microsoft .NET Framework 2.0 と Microsoft Core XML Services (MSXML) 6.0 がインストールされている場合は、Microsoft Visual Studio Tools for Applications (VSTA) 開発環境を Office InfoPath 2007 と共にインストールできます。最初に InfoPath をインストールしたときに Microsoft .NET Framework 2.0 と MSXML6 コンポーネントがインストールされていない場合は、VSTA開発環境を使用する前にこれらのコンポーネントをダウンロードしてインストールする必要があります (Microsoft .NET Framework 2.0 は、Windows Update のオプションのソフトウェア アップデートとして入手できます。MSXML6 は MSDN の Web サイトから入手できます)。

InfoPath のインストールに [標準] を選択した場合は、既定では VSTA 開発環境はインストールされません。VSTA をインストールするには、最初にインストールする際に [カスタマイズ] を選択するか、または [プログラムの追加と削除] を使用して Office または InfoPath のインストールをアップデートして VSTA を含めてください。VSTA をインストールするオプションは、[Microsoft Office InfoPath]、[.NET プログラミング サポート]、[.NET Framework Version 2.0 用の .NET プログラミング サポート] の順に展開すると表示されます。

VSTA 環境は、InfoPath 2003 互換オブジェクト モデル (Microsoft.Office.Interop.InfoPath.SemiTrust 名前空間のメンバ) または新しいマネージ コード オブジェクト モデル (Microsoft.Office.InfoPath 名前空間のメンバ) に対して C# または Visual Basic でビジネス ロジックを作成するのに使用されます。

メモメモ :

Visual Studio Tools for Applications 環境ではインストールに MSXML6 が必要ですが、InfoPath フォーム テンプレートと InfoPath エディタが必要とするのは MSXML5 のみです。

Visual Studio に統合された InfoPath デザイン モード

Visual Studio Tools for Office の新機能の 1 つは、Office InfoPath 2007 フォーム テンプレート デザイン環境が Visual Studio 開発環境に完全に統合されていることです。Office InfoPath 2007 の機能を使用して、マネージ コードを書く際にフォーム テンプレートの外観をデザインでき、Visual Studio を終了することなくその機能を拡張することができます。

InfoPath フォーム デザイナ機能は、「InfoPath 開発者ポータル」からダウンロード可能な Microsoft Visual Studio 2005 Tools for the 2007 Microsoft Office System をインストールすることによって Visual Studio 2005 に統合することができます。Microsoft Visual Studio 2005 Tools for the 2007 Microsoft Office System をインストールする前に、Visual Studio 2005 と Office InfoPath 2007 をインストールする必要があります。代わりに、Visual Studio 2008 と Visual Studio Tools for Office を使用することもできます。

開発環境は、COM 相互運用オブジェクト モデル (Microsoft.Office.Interop.InfoPath.SemiTrust 名前空間のメンバ) または新しいマネージ コード オブジェクト モデル (Microsoft.Office.InfoPath 名前空間のメンバ) に対して C# または Visual Basic でビジネス ロジックを作成するのに使用されます。

InfoPath 2003 オブジェクト モデルで動作するフォーム テンプレートの保守、作成、および変換

Office InfoPath 2007 の Visual Studio 開発環境に統合された VSTA および InfoPath デザイン モードを使用して、Microsoft Office InfoPath 2003 Toolkit for Visual Studio .NET または Visual Studio 2005 Tools for the Microsoft Office System で作成された InfoPath フォーム テンプレート プロジェクトを開き、作業を続行できます。

メモメモ :

VSTA、Microsoft Visual Studio 2005 Tools for the 2007 Microsoft Office System、または Visual Studio 2008 と Visual Studio Tools for Office でコンパイルされたフォーム テンプレートのユーザーのコンピュータには、Microsoft .NET Framework 2.0 がインストールされている必要があります。ただし、Visual Studio .NET 2003 でコンパイルされたフォーム テンプレートのユーザーのコンピュータには、Microsoft .NET Framework 1.1 があればかまいません。

また、どちらの開発環境を使用しても、InfoPath 2003 オブジェクト モデルで動作する新しいマネージ コード フォーム テンプレート プロジェクトを作成でき、InfoPath 2003 との下位互換性を維持できます。これらの開発環境を使用して下位互換性を維持するには、新しいフォーム テンプレートを作成し、[ツール] メニューの [フォームのオプション] をクリックし、フォーム テンプレート コード言語として、[プログラミング] カテゴリから [C# (InfoPath 2003 互換)] または [Visual Basic (InfoPath 2003 互換)] を選択します。

また、新しい InfoPath マネージ コード オブジェクト モデルを使用するために、InfoPath 2003 オブジェクト モデルで動作するフォーム テンプレートを変換することができます。フォーム テンプレートの変換については、「[方法] InfoPath のツールキットまたはスクリプトを使用して作成したフォーム テンプレートを開くまたは変換する方法」を参照してください。

関連項目

タスク

[WALKTHROUGH] 基本的なマネージ コード フォーム テンプレートを作成する方法
[WALKTHROUGH] InfoPath 2003 オブジェクト モデルを使用して基本的なフォーム テンプレートを作成およびデバッグする方法