次の方法で共有


文書パーツを挿入するときにコントロールをデータ ストアの特定の行にバインドする

文書パーツとは、表紙、ヘッダー、フッター、独自に作成した契約書の条項などの、定義済みコンテンツ部品のことです。 カスタム文書パーツを使用すると、プロフェッショナルな外観の Word 文書をすばやく簡単に作成できます。

データを含む XML にマップされているカスタム文書パーツ内のコンテンツ コントロールを使用します。 このようなコンテンツ コントロールの内容は、カスタム XML 部分を挿入すると、そのカスタム XML 部分に自動的にリンクされます。 また、次のサンプルに示すように、カスタム XML 部分を挿入するときに、カスタム XML 部分と XML マッピングを動的に追加することもできます。 たとえば、カバー ページを作成するには、添付された CustomXMLPart オブジェクト内の要素から取得した画像を表示する画像コンテンツ コントロールを配置できます。 同様に、テキスト コンテンツ コントロールを使用するプロジェクト名を作成し、そのプロジェクト名が含まれる CustomXMLPart オブジェクトの要素にコンテンツ コントロールをマップすることもできます。

この機能を利用すると、データをより簡単に更新することができます。 これらの項目のいずれかを更新するには、この表紙文書パーツを使用するすべての文書がサーバーに保存されている場合には、それらを更新するための数行のコードを記述するだけで済みます。 たとえば、古いロゴを新しいロゴに置き換えることができます。 また、プロジェクトのタイトルが変更された場合に、そのプロジェクト名が含まれるテキスト コンテンツ コントロールにマッピングした XML 要素のテキストを更新すれば、サーバーに保存されているすべてのドキュメントを自動的に更新することができます。

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

サンプル

ユーザーがカスタム文書パーツを文書に挿入したとします。その操作に基づいてカスタム XML 部分を挿入してマップしたいと考えています。

<?xml version="1.0" encoding="utf-8" ?> 
<projects> 
  <project> 
    <title>Data-Driven Document Generation</title> 
    <manager>Frank Martinez</manager> 
    <customer>Northwind Traders</customer> 
  </project> 
</projects>

次のコード例では、"Company Report" という文書パーツを追加したときに、上の XML ファイルを読み込み、各コンテンツ コントロールを新しい XML 部分の対応する XML ノードにマップします。

Private Sub Document_BuildingBlockInsert(ByVal Range As Range, _ 
        ByVal Name As String, ByVal Category As String, _ 
        ByVal Type As String, ByVal Template As String) 
 
    Dim cc As ContentControl 
    Dim part As CustomXMLPart 
 
    If Name = "Company Report" Then 
        'add the custom XML 
        ActiveDocument.CustomXMLParts.Add 
        Set part = ActiveDocument.CustomXMLParts(ActiveDocument.CustomXMLParts.Count).Load("c:\myProjects.xml") 
 
        'map the controls 
        For Each cc In Range.ContentControls 
            cc.XMLMapping.SetMapping cc.XMLMapping.XPath, cc.XMLMapping.PrefixMappings, part 
        Next cc 
    End If 
 
End Sub

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

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