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 アドイン

    PowerPoint用のOffice用アプリ

    当ブログでも散々紹介しているOffice用アプリ(apps for O…

  2. Office関連

    [Office 2013]サインインを無効にする。

    2013/4/10 追記:「オンライン画像」や「Office 用ア…

  3. Office関連

    「あのコマンドどこだっけ? for Office 2013」の紹介

    Word MVPの新田さんのブログでも紹介していただいている自作フリー…

  4. Excel

    Google TTSで文字列を読み上げるマクロ(言語自動検出対応版)

    2012/2/15 追記:下記マクロをExcel 2007/201…

  5. Office関連

    Office 2016でACROBATタブが表示されない!?(Acrobat DC)

    2015/10/16 追記:先日公開されたアップデート「15.00…

コメント

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

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

Time limit is exhausted. Please reload CAPTCHA.

※本ページはプロモーションが含まれています。

Translate

最近の記事

アーカイブ

PAGE TOP