Compartilhar via


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

expressão. SetValue (Mapa, XPath, SelectionNamespace, Repetição)

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 indica ao Excel que dados XML devem aparecer neste intervalo mapeado. A cadeia XPath também pode conter filtros válidos. Nesse caso, apenas um subconjunto dos dados a que o XPath aponta será apresentado neste intervalo mapeado.
SelectionNamespace Opcional Variant Especifica os prefixos de espaço de nomes utilizados 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 vinculado a uma coluna numa 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 do que uma única célula e for especificado Falso , ocorre um erro de tempo de execução.

Comentários

Veja a propriedade IsExportable do objeto XMLMap para um debate sobre o suporte do XPath no Excel. Se a expressão XPath for inválida ou se o XPath especificado já tiver sido mapeado, ocorre um erro de tempo de execução.

Se o Excel não conseguir resolve o espaço de nomes, ocorre um erro de tempo de execução.

Este método produz um erro se alguma 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 cria uma célula mapeada sem repetição e mapeada por predefinição. 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 se encontra dentro de um ListObject. Nesse caso, as informações de mapeamento são aplicadas a toda a coluna.

Se o intervalo abranger várias células, o Excel cria uma lista XML repetida. O Excel trata o intervalo selecionado como todos os valores de dados, por isso, quando a lista XML é criada, o intervalo é deslocado para baixo por uma linha e o cabeçalho é colocado na célula que a parte superior do intervalo ocupava. 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 seguinte cria uma lista XML com base no mapa de esquema Contactos anexado ao livro e, em seguida, utiliza o método SetValue para vincular 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.