XMLMapping オブジェクト (Word)
ContentControl オブジェクトについてカスタム XML とコンテンツ コントロールとの XML マッピングを表します。 XML マッピングは、コンテンツ コントロール内の文字列と、このドキュメントのカスタム XML データ ストア内の XML 要素とのリンクです。
XPath 文字列を使用してコンテンツ コントロールの XML マッピングを追加または変更するには、 SetMapping メソッドを使用します。 次の使用例は、文書の作成者に関する組み込みの文書プロパティを設定し、作業中の文書に新しいコンテンツ コントロールを挿入した後、組み込みの文書プロパティへのコントロールの XML マッピングを設定します。
Dim objcc As ContentControl
Dim objMap As XMLMapping
Dim blnMap As Boolean
ActiveDocument.BuiltInDocumentProperties("Author").Value = "David Jaffe"
Set objcc = ActiveDocument.ContentControls.Add _
(wdContentControlDate, ActiveDocument.Paragraphs(1).Range)
Set objMap = objcc.XMLMapping
blnMap = objMap.SetMapping(XPath:="/ns1:coreProperties[1]/ns0:createdate[1]")
If blnMap = False Then
MsgBox "Unable to map the content control."
End If
SetMappingByNode メソッドを使用して、CustomXMLNode オブジェクトを使用してコンテンツ コントロールの XML マッピングを追加または変更します。 次の例では、前の例と同じことを行いますが、 SetMappingByNode メソッドを使用します。
Dim objcc As ContentControl
Dim objNode As CustomXMLNode
Dim objMap As XMLMapping
Dim blnMap As Boolean
ActiveDocument.BuiltInDocumentProperties("Author").Value = "David Jaffe"
Set objcc = ActiveDocument.ContentControls.Add _
(wdContentControlDate, ActiveDocument.Paragraphs(1).Range)
Set objNode = ActiveDocument.CustomXMLParts.SelectByNamespace _
("https://schemas.openxmlformats.org/package/2006/metadata/core-properties") _
(1).DocumentElement.ChildNodes(1)
Set objMap = objcc.XMLMapping
blnMap = objMap.SetMappingByNode(objNode)
次の使用例新しい CustomXMLPart オブジェクトを作成、カスタム XML を読み込み、そこに 2 つの新しいコンテンツ コントロールを作成し、それぞれをカスタム XML 内の異なる XML 要素にマップします。
Dim objRange As Range
Dim objCustomPart As CustomXMLPart
Dim objCustomControl As ContentControl
Dim objCustomNode As CustomXMLNode
Set objCustomPart = ActiveDocument.CustomXMLParts.Add
objCustomPart.LoadXML ("<books><book><author>Matt Hink</author>" & _
"<title>Migration Paths of the Red Breasted Robin</title>" & _
"<genre>non-fiction</genre><price>29.95</price>" & _
"<pub_date>2/1/2007</pub_date><abstract>You see them in " & _
"the spring outside your windows. You hear their lovely " & _
"songs wafting in the warm spring air. Now follow the path " & _
"of the red breasted robin as it migrates to warmer climes " & _
"in the fall, and then back to your back yard in the spring." & _
"</abstract></book></books>")
ActiveDocument.Range.InsertParagraphBefore
Set objRange = ActiveDocument.Paragraphs(1).Range
Set objCustomNode = objCustomPart.SelectSingleNode _
("/books/book/title")
Set objCustomControl = ActiveDocument.ContentControls _
.Add(wdContentControlText, objRange)
objCustomControl.XMLMapping.SetMappingByNode objCustomNode
objRange.InsertParagraphAfter
Set objRange = ActiveDocument.Paragraphs(2).Range
Set objCustomNode = objCustomPart.SelectSingleNode _
("/books/book/abstract")
Set objCustomControl = ActiveDocument.ContentControls _
.Add(wdContentControlText, objRange)
objCustomControl.XMLMapping.SetMappingByNode objCustomNode
MsgBox objCustomControl.XMLMapping.IsMapped
コンテンツ コントロールの XML マッピングを削除するには、 Delete メソッドを使用します。 コンテンツ コントロールの XML マッピングを削除すると、コンテンツ コントロールと XML データとの接続だけが削除されます。 コンテンツ コントロールと XML データはどちらも文書内に残ります。 次の使用例は、作業中の文書で、現在マップされているすべてのコンテンツ コントロールの XML マッピングを削除します。
Dim objCC As ContentControl
For Each objCC In ActiveDocument.ContentControls
If objCC.XMLMapping.IsMapped Then
objCC.XMLMapping.Delete
End If
Next
コンテンツ コントロールが文書のデータ ストア内の XML ノードにマップされているかどうかを確認するには、 IsMapped プロパティを使用します。 次の使用例は、作業中の文書でマップされているすべてのコンテンツ コントロールの XML マッピングを削除します。
Dim objCC As ContentControl
For Each objCC In ActiveDocument.ContentControls
If objCC.XMLMapping.IsMapped Then
objCC.XMLMapping.Delete
End If
Next
コンテンツ コントロールをマップするのに XML ノードにアクセスするのにには、 CustomXMLNode プロパティを使用します。 コンテンツ コントロールをマップするのに XML 部分にアクセスするのにには、 CustomXMLPart プロパティを使用します。 CustomXMLNode オブジェクトと CustomXMLPart オブジェクトの操作に関する詳細については、それぞれのオブジェクトのトピックを参照してください。
Office VBA またはこの説明書に関するご質問やフィードバックがありますか? サポートの受け方およびフィードバックをお寄せいただく方法のガイダンスについては、Office VBA のサポートおよびフィードバックを参照してください。