Objeto XMLMapping (Word)
Representa o mapeamento XML em um objeto ContentControl entre o XML personalizado e um controle de conteúdo. Um mapeamento XML é um vínculo entre o texto em um controle de conteúdo e um elemento XML no repositório de dados XML personalizado para esse documento.
Comentários
Utilize o método SetMapping para adicionar ou alterar o mapeamento XML de um controle de conteúdo utilizando uma cadeia de caracteres de XPath. O exemplo a seguir define a propriedade interna do documento para o autor do documento, insere um novo controle de conteúdo no documento ativo e, em seguida, define o mapeamento XML do controle para a propriedade interna do documento.
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
Use o método SetMappingByNode para adicionar ou alterar o mapeamento de XML para um controle de conteúdo usando um objeto CustomXMLNode. O exemplo a seguir faz o mesmo que o exemplo anterior, mas usa o método 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)
O exemplo a seguir cria um novo objeto CustomXMLPart, carrega o XML personalizado nele e, em seguida, cria dois novos controles de conteúdo e mapeia cada um da um elemento XML diferente no XML personalizado.
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
Utilize o método Delete para remover o mapeamento XML de um controle de conteúdo. A exclusão do mapeamento XML de um controle de conteúdo exclui apenas a conexão entre o controle de conteúdo e os dados do XML. Tanto os dados do XML quanto o controle de conteúdo permanecem no documento. O exemplo a seguir exclui o mapeamento XML de todos os controles de conteúdo no documento ativo que estão atualmente mapeados.
Dim objCC As ContentControl
For Each objCC In ActiveDocument.ContentControls
If objCC.XMLMapping.IsMapped Then
objCC.XMLMapping.Delete
End If
Next
Utilize a propriedade IsMapped para determinar se um controle de conteúdo estiver mapeado para um nó XML no repositório de dados do documento. O exemplo a seguir exclui o mapeamento XML de todos os controles de conteúdo mapeados no documento ativo.
Dim objCC As ContentControl
For Each objCC In ActiveDocument.ContentControls
If objCC.XMLMapping.IsMapped Then
objCC.XMLMapping.Delete
End If
Next
Use a propriedade CustomXMLNode para acessar o nó XML ao qual um controle de conteúdo é mapeado. Use a propriedade CustomXMLPart para acessar a parte XML ao qual um controle de conteúdo é mapeado. Para obter mais informações sobre como trabalhar com objetos de CustomXMLPart e CustomXMLNode, consulte os tópicos do respectivo objeto.
Confira também
Referência do modelo de objeto do Word
Suporte e comentários
Tem dúvidas ou quer enviar comentários sobre o VBA para Office ou sobre esta documentação? Confira Suporte e comentários sobre o VBA para Office a fim de obter orientação sobre as maneiras pelas quais você pode receber suporte e fornecer comentários.