Compartilhar via


Vincular um controle de conteúdo a um nó no Repositório de Dados

O mapeamento XML é um recurso do Word que permite criar um link entre um documento e um arquivo XML. Isso cria uma separação real de dados/modos de exibição entre a formatação de documento e os dados XML personalizados.

O mapeamento XML permite que você mapeie um elemento em uma parte XML personalizada que esteja anexada ao documento. O repositório de dados fornece acesso a todas as partes XML personalizadas que estão armazenadas em um arquivo aberto. Consulte qualquer nó dentro de qualquer parte XML personalizada dentro do armazenamento de dados.

Para obter mais informações sobre os controles de conteúdo, consulte Trabalhando com controles de conteúdo.

Os objetos usados neste exemplo são:

Amostra

As etapas a seguir permitem a você ligar um controle de conteúdo a um nó no repositório de dados do documento.

  1. Crie o controle de conteúdo para associar a um nó no armazenamento de dados. Os controles de conteúdo são partes predefinidas de conteúdo. Há vários tipos de controles de conteúdo, incluindo blocos de texto, menus suspensos, caixas de combinação, controles de calendário e imagens. Você pode mapear esses controles de conteúdo para um elemento em um arquivo XML. Usando xml path language (XPath), você pode mapear conteúdo programaticamente em um arquivo XML para um controle de conteúdo. Isso permite que você escreva um aplicativo simples e curto para manipular e modificar dados em um documento.

Para obter mais informações sobre os controles de conteúdo, consulte Trabalhando com controles de conteúdo. O exemplo de código a seguir cria um controle de conteúdo de texto simples e fornece um título de "MyTitle".

   Dim strTitle As String 
 strTitle = "MyTitle" 
 Dim oContentControl As Word.ContentControl 
 Set oContentControl = ActiveDocument.ContentControls.Add(wdContentControlText) 
 oContentControl.Title = strTitle
  1. Defina o mapeamento XML no controle de conteúdo. O armazenamento de dados em um documento no modelo de objeto do Word está contido na propriedade CustomXMLParts do objeto Document . A propriedade CustomXMLParts retorna uma coleção CustomXMLParts que contém objetos CustomXMLPart . Ele aponta para todas as partes XML personalizadas armazenadas em um documento.

Um objeto CustomXMLPart representa uma única parte XML personalizada no armazenamento de dados. Para carregar dados XML personalizados, primeiro você deve adicionar uma nova parte XML personalizada a um objeto Document usando o método Add da coleção CustomXMLParts . Isso acrescenta uma nova parte XML personalizada vazia ao documento. Como ele está vazio, não há XML para o qual mapear.

Em seguida, você deve carregar XML na parte recém-definida chamando o método Load do objeto CustomXMLPart , usando um caminho válido para um arquivo XML como parâmetro ou chamando o método LoadXML do CustomXMLPart e passando o XML diretamente. As partes XML personalizadas padrão armazenadas com um documento do Word contêm as propriedades padrão do documento; você não pode excluir essas partes. Você sempre pode exibir o conteúdo de uma parte XML personalizada chamando a propriedade XML somente leitura nela. Se você chamar a propriedade XML de um objeto CustomXMLPart , uma cadeia de caracteres será retornada, que contém o XML nesse armazenamento de dados.

Crie um arquivo XML personalizado válido e salve-o na unidade de disco rígido. Adicione uma parte XML personalizada ao documento que contém o controle de conteúdo que você deseja mapear para dados XML personalizados. Suponha que o controle de conteúdo seja mapeado para o arquivo XML personalizado de exemplo a seguir.

   <?xml version="1.0" encoding="utf-8" ?>
 <tree>
   <fruit>
     <fruitType>peach</fruitType>
     <fruitType>pear</fruitType>
     <fruitType>banana</fruitType>
   </fruit>
 </tree>

Agora, suponha que o controle de conteúdo seja mapeado para um <nó fruitType> da parte XML personalizada anterior.

O código de exemplo a seguir demonstra como anexar um arquivo XML a um documento, de modo que ele se torne um item de armazenamento de dados disponível.

   ActiveDocument.CustomXMLParts.Add
 ActiveDocument.CustomXMLParts(ActiveDocument.CustomXMLParts.Count).Load ("c:\mySampleCustomXMLFile.xml")

Para criar um mapeamento XML, você usa uma expressão XPath para especificar o nó na parte de dados XML personalizada para a qual você deseja mapear um controle de conteúdo. Definir um mapeamento XML em um controle de conteúdo especifica o nó na parte XML personalizada adicionada, usando essa expressão XPath.

Depois de adicionar uma parte XML personalizada ao documento (e depois que a parte XML personalizada contiver XML), você estará pronto para mapear um de seus nós para um controle de conteúdo. Para fazer isso, passe uma Cadeia de Caracteres contendo um XPath válido para um objeto ContentControl usando o método SetMapping do objeto XMLMapping (usando a propriedade XMLMapping do objeto ContentControl ).

A seguir está um exemplo de fazer isso com um XPath que se refere a um nó de armazenamento de dados que contém o valor do primeiro elemento fruitType.

   Dim strXPath As String 
 strXPath = "tree/fruit/fruitType[1]" 
 ActiveDocument.ContentControls(1).XMLMapping.SetMapping strXPath 

Se você omitir os argumentos PrefixMappings e CustomXMLPart opcionais, o Word pesquisará cada uma das partes XML personalizadas em ordem e mapeará o controle até a primeira parte que recupera com êxito um nó XML personalizado usando o XPath especificado.

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.