次の方法で共有


Microsoft Office InfoPath のプライマリ相互運用機能アセンブリについて

Microsoft Office InfoPath 2007 アプリケーションは外部オートメーションとフォーム テンプレート スクリプトの両方のプログラミング インターフェイスを COM インターフェイスとして公開する Component Object Model (COM) アプリケーションです。マネージ コード言語 (Visual C# および Visual Basic) を使用する InfoPath ソリューションの作成をサポートするために、Office InfoPath 2007 セットアップ プログラムの [.NET プログラミング サポート] オプションによって 3 つの相互運用機能アセンブリがインストールされます。相互運用機能アセンブリとは、マネージ コードとアンマネージ コードの仲介役として機能する .NET アセンブリで、COM オブジェクトのメンバを、対応する .NET マネージ メンバにマップします。

InfoPath によってインストールされる 3 つの相互運用機能アセンブリのファイルを以下に示します。

  • Microsoft.Office.Interop.InfoPath.dll

  • Microsoft.Office.Interop.InfoPath.SemiTrust.dll

  • Microsoft.Office.Interop.InfoPath.Xml.dll

ここでは、Microsoft.Office.Interop.InfoPath 相互運用機能アセンブリによって公開されるオブジェクト モデルについて説明します。このアセンブリは、外部オートメーション コード用にのみ使用されます。InfoPath フォーム テンプレート (.xsn) 内からマネージコードを書いたり実行したりするためだけに実行される Microsoft.Office.Interop.InfoPath.SemiTrust アセンブリの詳細については、「InfoPath 2003 互換オブジェクト モデル」を参照してください。

インストールに関する重要な情報

既定では、Office InfoPath 2007 セットアップ プログラムの [標準] インストール オプションにより、Microsoft.Office.Interop.InfoPath アセンブリがグローバル アセンブリ キャッシュ (GAC) にインストールされます。GAC の内容は、C:\Windows\Assembly フォルダから見ることができます。このアセンブリは "Microsoft Office InfoPath プライマリ相互運用機能アセンブリ" と呼ばれ、通常、Microsoft.Office.Interop.InfoPath.Xml アセンブリと共に使用されます。このアセンブリも GAC にインストールされ、マネージ コードを使用する外部アプリケーションから InfoPath アプリケーションを自動化します。Microsoft.Office.Interop.InfoPath.Xml アセンブリの詳細については、「InfoPath XML 相互運用機能アセンブリについて」を参照してください。

Microsoft.Office.Interop.InfoPath アセンブリが GAC に表示されない場合、Office InfoPath 2007 が適切にインストールされたことを確認する必要があります。InfoPath の [標準] インストールの場合、セットアップを実行する前に .NET Framework 1.1 再配布可能ファイルまたは .NET Framework 1.1 Software Development Kit (SDK) がインストールされていれば、セットアップ プログラムの [.NET プログラミング サポート] オプションは [自分のコンピュータから実行] に設定されています。これらの相互運用機能アセンブリがコンピュータで利用できない場合は、.NET Framework 1.1 がインストールされていることを確認する必要があります。その後、[コントロール パネル] の [プログラムの追加と削除] を実行して、[Microsoft Office InfoPath] の [.NET プログラミング サポート] を [自分のコンピュータから実行] に設定します。

.NET Framework 1.1 再配布可能ファイルのダウンロードについては、「.NET Framework 1.1 再配布可能ファイル」を参照してください。

Microsoft.Office.Interop.InfoPath 名前空間

InfoPath フォーム テンプレートの特定のタスクのマネージ コードを書くプロセスは、Microsoft Visual Basic や JScript などの COM 言語で同じプログラミング タスクを実行する場合とよく似ていますが、Microsoft Visual Studio の [オブジェクト ブラウザ] から Microsoft.Office.Interop.InfoPath 名前空間を表示したときに公開されるオブジェクト モデルは、より複雑に見えます。これは、.NET Framework の相互運用機能では、COM サーバーのすべてのパブリック インターフェイスに加えて、.NET Framework 自体が必要とする追加のコンストラクトも COM サーバーで公開される必要があるためです。相互運用機能アセンブリによって公開されるオブジェクト モデルがより複雑に見える理由の詳細については、「InfoPath 2003 互換オブジェクト モデル」の「COM オブジェクトが InfoPath 2003 互換オブジェクト モデルに公開されるしくみ」を参照してください。

IntelliSense を使用する

ここで使用する例は、Microsoft.Office.Interop.InfoPath アセンブリと Microsoft.Office.Interop.InfoPath.Xml アセンブリへの参照が確立していることを前提としています。その方法と、外部オートメーションのその他の例については、「外部オートメーションのシナリオと例」を参照してください。

外部オートメーション コードで Microsoft IntelliSense 入力候補を使用するには、以下のコード行に示すように、Application クラスのインスタンス用のオブジェクト変数を作成する必要があります。

Application myApp = 
    new Microsoft.Office.Interop.InfoPath.Application();
Dim myApp As Application = _
    New Microsoft.Office.Interop.InfoPath.Application()

オブジェクト変数の作成後、変数名の後にピリオドを入力すると、Application クラスのメンバを選択するためのドロップダウン リストが表示されます。

InfoPath フォームを操作するには、以下のコード行に示すように、型 XDocument のオブジェクト変数を宣言し、Application オブジェクト変数の XDocuments コレクションからフォームを開くことで変数を初期化します。

XDocument myXDoc = myApp.XDocuments.Open(
    "c:\\temp\\Form1.xml",
    (int) XdDocumentVersionMode.xdFailOnVersionOlder);
Dim myXDoc As XDocument = myApp.XDocuments.Open( _
    "c:\\temp\\Form1.xml", _
    XdDocumentVersionMode.xdFailOnVersionOlder)

変数名の後にピリオドを入力すると、XDocument クラスのメンバ用の IntelliSense 入力候補ドロップダウン リストが表示されます。

Microsoft XML Core Services (MSXML) 5.0 for Microsoft Office を使用してフォームの基になる XML ドキュメントの内容を操作するには、型 IXMLDOMDocument2 の変数を作成し、XDocument クラスの DOM プロパティを使用して、その変数にフォームの XML Document Object Model (DOM) を割り当てる必要があります。

IXMLDOMDocument2 doc= myXDoc.DOM as IXMLDOMDocument2;
Dim doc As IXMLDOMDocument2 = myXDoc.DOM

変数名の後にピリオドを入力すると、IXMLDOMDocument2 クラスのメンバ用の IntelliSense 入力候補ドロップダウン リストが表示されます。これにより、MSXML 5.0 を使用して XML ドキュメントを操作できるようになります。

クラス ライブラリ リファレンス ドキュメントを使用する

Microsoft.Office.Interop.InfoPath 名前空間のクラス ライブラリ リファレンス ドキュメントの構成は、コクラス インターフェイスと、そのコクラス インターフェイスによって実装される継承インターフェイスとの関係を反映しています。トピックの構成は、Office InfoPath 2007 に付属の『InfoPath 開発者リファレンス』の一部である『InfoPath オブジェクト モデル リファレンス』と同じです。Application インターフェイスおよび XDocument インターフェイスのトピックを例外として、その他の COM コクラス インターフェイスのすべてのトピックは、『InfoPath スクリプト リファレンス』の "オブジェクト" および "コレクション" のトピックに対応しています。たとえば、Microsoft.Office.Interop.InfoPath 名前空間のリファレンス ドキュメントのトピック「UIObject インターフェイス」および「WindowsCollection インターフェイス」は、『InfoPath オブジェクト モデル リファレンス』のスクリプト リファレンスのトピック「UI オブジェクト」および「Windows コレクション」の同等の内容に対応しています。

ただし、トピックの冒頭のインターフェイスの説明に続くコクラス インターフェイスのメンバへのリンクでは、空のトピックが表示されます。コクラス インターフェイスによって実装されるメンバの一覧を表示するには、そのコクラスによって継承される最も新しいインターフェイスのトピックを開き、そのメンバの表を開く必要があります。継承インターフェイスへのリンクは、コクラス インターフェイスのトピックの「解説」セクションの先頭にあります。

Visual Studio コード エディタで F1 キーを押した場合の動作は、インターフェイスのメンバを操作している場合がほとんどであるために、F1 ヘルプを呼び出したメンバが直接表示される以外は、ほとんど同じです。ただし、メンバがバージョン付きのインターフェイスから実装される場合があるという点で、初めは混乱する可能性があります。たとえば、「myXDocument.UI.Alert」と入力し、Alert にカーソルを置いて F1 キーを押すと、「UI2.Alert メソッド」というタイトルのトピックが表示されます。これは、Alert メソッドが UI2 インターフェイスのメンバの実装であるからです。

InfoPath オブジェクト モデルのメンバにオプションのパラメータを渡す

InfoPath オブジェクト モデルのメンバにオプションのパラメータがある場合に、そのパラメータの値を指定しないときは、そのパラメータの Type.Missing フィールドを渡す必要があります。実際の値を省略したときに Type.Missing フィールドを渡さないと、ビルド エラーが発生します。これは、C# と Visual Basic .NET のどちらで書かれたコードにも当てはまります。たとえば、ViewObject インターフェイスの SelectNodes メソッドには、varEndNode と varViewContext という 2 つのオプション パラメータがあります。これらのオプション パラメータに対して実際の値を指定しないコード行は、次のようになっている必要があります。

myXDocument.View.SelectNodes(group1, Type.Missing, Type.Missing);
myXDocument.View.SelectNodes(group1, Type.Missing, Type.Missing)

関連項目

概念

外部オートメーションのシナリオと例