Método XPath.SetValue (Excel)

Mapeia o objeto XPath especificado para um objeto ListColumn ou a coleção Range. Se o objeto XPath tiver sido mapeado anteriormente para o objeto ListColumn ou a coleção Range, o método SetValue definirá as propriedades do objeto XPath.

Sintaxe

mais simples. SetValue (Map, XPath, SelectionNamespace, Repeating)

expressão Uma variável que representa um objeto XPath .

Parâmetros

Nome Obrigatório/Opcional Tipo de dados Descrição
Map Obrigatório XmlMap As informações sobre mapas comas quais o intervalo mapeado estará associado.
XPath Obrigatório String Uma expressão XPath válida que informa ao Excel quais dados XML devem aparecer neste intervalo mapeado. A cadeia de caracteres XPath também pode conter filtros válidos e, nesse caso, apenas um subconjunto dos dados para os quais o XPath aponta aparecerá nesse intervalo mapeado.
SelectionNamespace Opcional Variant Especifica todos os prefixos de namespace usados no argumento XPath . Esse argumento poderá ser omitido se o objeto XPath não contiver nenhum prefixo, ou o objeto XPath usar os prefixos internos do Microsoft Excel.
Repeating Opcional Variant Especifica se o objeto XPath deve ser associado a uma coluna em uma lista XML ou mapeado para uma única célula. Defina como True para vincular o objeto XPath a uma coluna em uma lista XML. False força a criação de uma célula que não se repete. Se o intervalo for maior que uma única célula e False for especificado, ocorrerá um erro em tempo de execução.

Comentários

Consulte a propriedade IsExportable do objeto XMLMap para obter uma discussão sobre o suporte ao XPath no Excel. Se a expressão XPath for inválida ou se o XPath especificado já tiver sido mapeado, ocorrerá um erro em tempo de execução.

Se o Excel não conseguir resolver o namespace, ocorrerá um erro em tempo de execução.

Esse método produzirá um erro se qualquer uma das seguintes condições for verdadeira:

  • O intervalo estende-se por múltiplas colunas na grade.

  • Parte do intervalo se estende por células já mapeadas e o resto por células não mapeadas.

  • Parte do intervalo se estende por um mapeamento e a outra parte do intervalo por um mapeamento diferente ou um XPath diferente do mesmo mapeamento.

Se o intervalo for uma única célula, o Excel usará como padrão a criação de uma célula mapeada de mapeamento único e não repetida. A célula que não se repete não recebe um cabeçalho.

A exceção à instrução anterior ocorre quando o intervalo de célula única está dentro de um ListObject, nesse caso, as informações de mapeamento são aplicadas a toda a coluna.

Se o intervalo se estender por várias células, o Excel criará uma lista XML repetida. O Excel trata o intervalo selecionado como todos os valores de dados, portanto, quando a lista XML é criada, o intervalo é deslocado para baixo em uma linha e o cabeçalho é colocado na célula ocupada pelo topo do intervalo. A linha inserida fica na parte inferior do intervalo deslocado.

Observação

  • O algoritmo de detecção de cabeçalho do Excel não é usado no modelo de objeto. A suposição é de que não existem cabeçalhos na grade.
  • A mesclagem automática e o crescimento automático são desativados ao criar intervalos mapeados no modelo de objeto.

Exemplo

O exemplo a seguir cria uma lista XML com base no mapa de esquema de Contatos que está anexado à pasta de trabalho e, em seguida, usa o método SetValue para associar cada coluna a um objeto XPath .

Sub CreateXMLList() 
    Dim mapContact As XmlMap 
    Dim strXPath As String 
    Dim lstContacts As ListObject 
    Dim objNewCol As ListColumn 
 
    ' Specify the schema map to use. 
    Set mapContact = ActiveWorkbook.XmlMaps("Contacts") 
     
    ' Create a new list. 
    Set lstContacts = ActiveSheet.ListObjects.Add 
         
    ' Specify the first element to map. 
    strXPath = "/Root/Person/FirstName" 
    ' Map the element. 
    lstContacts.ListColumns(1).XPath.SetValue mapContact, strXPath 
 
    ' Specify the second element to map. 
    strXPath = "/Root/Person/LastName" 
    ' Add a column to the list. 
    Set objNewCol = lstContacts.ListColumns.Add 
    ' Map the element. 
    objNewCol.XPath.SetValue mapContact, strXPath 
 
    strXPath = "/Root/Person/Address/Zip" 
    Set objNewCol = lstContacts.ListColumns.Add 
    objNewCol.XPath.SetValue mapContact, strXPath 
End Sub

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.