Office関連

コンテンツコントロールに外部XMLのデータをマップするWordマクロ

Word 2007で追加された機能「コンテンツコントロール」を使うと外部データソースのデータマッピングが簡単にできます。
今回はこのコンテンツコントロールに外部のXMLファイルのデータをマッピングする方法を紹介します。

まずは、元になるXMLファイルと対象となる文書の準備です。

・C:\Test\Customer.xml

<?xml version="1.0"?>
<Customer>
  <CompanyName>株式会社ka-net</CompanyName>
  <ContactName>きぬあさ</ContactName>
  <ContactTitle>経理部長</ContactTitle>
  <Phone>12-3456-7890</Phone>
</Customer>

・Word文書に下図のようなテーブルを挿入します。

次にコンテンツコントロール(今回はテキスト コンテンツ コントロール)を文書に追加します。
開発」タブから手動で追加することもできるのですが、今回はマクロで追加します。

Public Sub AddContentControls()
'コンテンツコントロールの挿入
  With ActiveDocument.Tables(1)
    .Cell(2, 2).Range.ContentControls.Add(wdContentControlText).SetPlaceholderText Text:="顧客名を入力してください。"
    .Cell(3, 2).Range.ContentControls.Add(wdContentControlText).SetPlaceholderText Text:="担当者名を入力してください。"
    .Cell(4, 2).Range.ContentControls.Add(wdContentControlText).SetPlaceholderText Text:="担当者の肩書きを入力してください。"
    .Cell(5, 2).Range.ContentControls.Add(wdContentControlText).SetPlaceholderText Text:="電話番号を入力してください。"
  End With
End Sub

上記コードを実行すると、テーブル内に下図のようにコンテンツコントロールが挿入されます。

最後にXMLのデータをマッピングするコードを実行します。

Public Sub SetXMLMap()
'コンテンツコントロールにXMLのデータをマッピング
  If ActiveDocument.CustomXMLParts.Add.Load("C:\Test\Customer.xml") Then 'カスタムXMLパーツを追加して外部XMLファイル読込
    'XPathを使用してデータをマッピング
    ActiveDocument.ContentControls(1).XMLMapping.SetMapping "/Customer/CompanyName"
    ActiveDocument.ContentControls(2).XMLMapping.SetMapping "/Customer/ContactName"
    ActiveDocument.ContentControls(3).XMLMapping.SetMapping "/Customer/ContactTitle"
    ActiveDocument.ContentControls(4).XMLMapping.SetMapping "/Customer/Phone"
  End If
End Sub

上記コードは、文書内のCustomXMLPartsコレクションに新しいCustomXMLPartオブジェクトを追加して、各コンテンツコントロールにXMLファイルから読み込んだデータをXPathでマッピングする処理を行います。

以上のように、コンテンツコントロールを活用すると外部のデータとの連携が簡単にできるので、テンプレートはWord文書だけど中のデータは外部データから持ってきたい、という場合には役立つ処理だろうと思います。

Officeのヘルプを単独で開く。前のページ

アクティブなスライドを取得するPowerPointマクロ次のページ

関連記事

  1. アイコン一覧

    Office 2013 アイコン一覧(V)

    ・Office 2013 アイコン一覧 NUM…

  2. Office アドイン

    [Office用アプリ]Bing Maps for Accessの紹介

    Microsoft Download CenterでAccess向けO…

  3. Office関連

    「2014年12月のWindows Update以降コマンドボタンが使えなくなった」トラブルへのFi…

    当ブログでも「KB2553154の更新プログラムをアンインストールする…

  4. アイコン一覧

    Office 2013 アイコン一覧(Q)

    ・Office 2013 アイコン一覧 NUM…

  5. Office関連

    Excel 2013版URLエンコードマクロ

    ※ この情報はOffice 2013 カスタマー プレビュー版を元にし…

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

Time limit is exhausted. Please reload CAPTCHA.

Translate

Chinese (Simplified)Chinese (Traditional)EnglishFrenchGermanJapaneseKoreanRussianSpanish

最近の記事

アーカイブ

PAGE TOP