次の方法で共有


コンテンツ コントロールをデータ ストアのノードに連結する

XML マッピングは、文書と XML ファイルの間にリンクを作成するための Word の機能です。 これにより、文書の書式設定とカスタム XML データの間で、データ/表示が完全に分離されます。

XML マッピングを使用して、文書に関連付けられているカスタム XML 部分の要素をマップすることができます。 開いているファイルに保存されているすべてのカスタム XML データには、データ ストアからアクセスできます。 データ ストア内のカスタム XML パーツ内の任意のノードを参照します。

コンテンツ コントロールの詳細については、「コンテンツ コントロールを操作する」を参照してください。

このサンプルで使用されているオブジェクトは次のとおりです。

サンプル

次の手順を使用して、コンテンツ コントロールを文書のデータ ストア上のノードに連結できます。

  1. データ ストア上のノードに連結するコンテンツ コントロールを作成します。 コンテンツ コントロールとは、定義済みのコンテンツのことです。 コンテンツ コントロールには、テキスト ブロック、ドロップダウン メニュー、コンボ ボックス、カレンダー コントロール、画像など、いくつかの種類があります。 これらのコンテンツ コントロールを XML ファイルの要素にマップできます。 XML ファイルのコンテンツをコンテンツ コントロールにマップするときには、XML パス言語 (XPath) を使って記述します。 この言語で小さくて簡単なアプリケーションを記述するだけで、文書内のデータを操作して変更することができます。

コンテンツ コントロールの詳細については、「コンテンツ コントロールを操作する」を参照してください。 次のコード例では、テキスト形式のコンテンツ コントロールを作成し、それに "MyTitle" というタイトルを付けています。

   Dim strTitle As String 
 strTitle = "MyTitle" 
 Dim oContentControl As Word.ContentControl 
 Set oContentControl = ActiveDocument.ContentControls.Add(wdContentControlText) 
 oContentControl.Title = strTitle
  1. コンテンツ コントロールに XML マッピングを設定します。 Word オブジェクト モデルのドキュメント内のデータ ストアは、Document オブジェクトの CustomXMLParts プロパティに含まれています。 CustomXMLParts プロパティは、CustomXMLPart オブジェクトを含む CustomXMLParts コレクションを返します。 ドキュメントに格納されているすべてのカスタム XML パーツを指します。

CustomXMLPart オブジェクトは、データ ストア内の 1 つのカスタム XML パーツを表します。 カスタム XML データを読み込むには、まず CustomXMLParts コレクションの Add メソッドを使用して、Document オブジェクトに新しいカスタム XML パーツを追加する必要があります。 これにより、新しい空のカスタム XML パーツがドキュメントに追加されます。 空であるため、マップする XML はありません。

次に、CustomXMLPart オブジェクトの Load メソッドを呼び出し、XML ファイルへの有効なパスをパラメーターとして使用するか、CustomXMLPartLoadXML メソッドを呼び出して XML を直接渡すことによって、XML を新しく定義された部分に読み込む必要があります。 Word 文書と共に格納される既定のカスタム XML パーツには、ドキュメントの標準ドキュメント プロパティが含まれています。これらの部分は削除できません。 カスタム XML パーツの内容は、読み取り専用 XML プロパティを呼び出すことでいつでも表示できます。 CustomXMLPart オブジェクトの XML プロパティを呼び出すと、そのデータ ストア内の XML を含む文字列が返されます。

有効なカスタム XML ファイルをビルドし、ハード ディスク ドライブに保存します。 カスタム XML データにマップするコンテンツ コントロールを含むカスタム XML パーツをドキュメントに追加します。 コンテンツ コントロールが次のサンプル カスタム XML ファイルにマップされるとします。

   <?xml version="1.0" encoding="utf-8" ?>
 <tree>
   <fruit>
     <fruitType>peach</fruitType>
     <fruitType>pear</fruitType>
     <fruitType>banana</fruitType>
   </fruit>
 </tree>

Now, suppose the content control is mapped to a <fruitType> node of the previous custom XML part.

次のサンプル コードは、XML ファイルを文書に連結し、データ ストア項目として使用できるようにする方法を示しています。

   ActiveDocument.CustomXMLParts.Add
 ActiveDocument.CustomXMLParts(ActiveDocument.CustomXMLParts.Count).Load ("c:\mySampleCustomXMLFile.xml")

XML マッピングを作成するには、XPath 式を使用して、コンテンツ コントロールをマップしたいカスタム XML データ部分のノードを指定します。 その XPath 式を使ってコンテンツ コントロールに XML マッピングを設定することで、追加したカスタム XML 部分のノードが指定されます。

カスタム XML 部分を文書に追加し、そのカスタム XML 部分に XML を設定したら、いずれかのノードをコンテンツ コントロールにマップできる状態になります。 これを行うには、XMLMapping オブジェクトの SetMapping メソッド (ContentControl オブジェクトの XMLMapping プロパティを使用) を使用して、有効な XPath を含む StringContentControl オブジェクトに渡します。

以下のコードは、1 番目の fruitType 要素の値を含むデータ ストア ノードを参照する XPath を使って、この操作を行う例を示しています。

   Dim strXPath As String 
 strXPath = "tree/fruit/fruitType[1]" 
 ActiveDocument.ContentControls(1).XMLMapping.SetMapping strXPath 

任意指定の PrefixMappings 引数と CustomXMLPart 引数を省略した場合は、各カスタム XML 部分が順番に検索され、指定した XPath を使用してカスタム XML ノードの取得に成功した最初の XML 部分にコントロールがマップされます。

サポートとフィードバック

Office VBA またはこの説明書に関するご質問やフィードバックがありますか? サポートの受け方およびフィードバックをお寄せいただく方法のガイダンスについては、Office VBA のサポートおよびフィードバックを参照してください。