Partager via


Méthode XPath.SetValue (Excel)

Cette méthode mappe l'objet XPath spécifié à un objet ListColumn ou à une collection Range. Si l'objet XPath a été mappé précédemment à l'objet ListColumn ou à la collection Range, la méthode SetValue définit les propriétés de l'objet XPath.

Syntaxe

expression. SetValue (Map, XPath, SelectionNamespace, Repeating)

expression Variable qui représente un objet XPath .

Paramètres

Nom Requis/Facultatif Type de données Description
Map Requis XmlMap Informations de mappage à laquelle la plage mappée sera associée.
XPath Obligatoire String Expression XPath valide qui indique à Excel quelles données XML doivent apparaître dans cette plage mappée. La chaîne XPath peut également contenir des filtres valides, auquel cas seul un sous-ensemble des données vers lesquelles pointe le XPath apparaît dans cette plage mappée.
SelectionNamespace Facultatif Variant Spécifie tous les préfixes d’espace de noms utilisés dans l’argument XPath . Cet argument peut être omis si l'objet XPath ne contient pas de préfixes, ou si l'objet XPath utilise des préfixes Microsoft Excel.
Repeating Facultatif Variant Spécifie si l’objet XPath doit être lié à une colonne dans une liste XML ou mappé à une seule cellule. Affectez la valeur True pour lier l’objet XPath à une colonne dans une liste XML. False force la création d’une cellule non répétée. Si la plage est supérieure à une seule cellule et que False est spécifié, une erreur d’exécution se produit.

Remarques

Consultez la propriété IsExportable de l’objet XMLMap pour une discussion sur la prise en charge de XPath dans Excel. Si l’expression XPath n’est pas valide ou si le XPath spécifié a déjà été mappé, une erreur d’exécution se produit.

Si Excel ne peut pas résoudre l’espace de noms, une erreur d’exécution se produit.

Cette méthode génère une erreur si l’une des conditions suivantes est remplie :

  • La plage s'étend sur plusieurs colonnes de la grille.

  • Une partie de la plage couvre des cellules déjà mappées et le reste de la plage des cellules non mappées.

  • Une partie de la plage couvre un mappage et une autre partie couvre un autre mappage ou un autre objet XPath du même mappage.

Si la plage est une seule cellule, Excel crée par défaut une seule cellule mappée et non répétée. Aucun en-tête n'est attribué à cette cellule.

L’exception à l’instruction précédente se produit lorsque la plage à cellule unique se trouve dans un ListObject, auquel cas, les informations de mappage sont appliquées à la colonne entière.

Si la plage s’étend sur plusieurs cellules, Excel crée une liste XML répétée. Excel traite la plage sélectionnée comme toutes les valeurs de données. Par conséquent, lorsque la liste XML est créée, la plage est décalée d’une ligne et l’en-tête est placé dans la cellule occupée par le haut de la plage. La ligne d'insertion se trouve sous la plage qui a été déplacée.

Remarque

  • L’algorithme de détection d’en-tête d’Excel n’est pas utilisé dans le modèle objet. L’hypothèse est qu’il n’existe aucun en-tête dans la grille.
  • Les fonctionnalités de fusion et de croissance automatiques sont désactivées lors de la création des plages mappées dans le modèle d'objet.

Exemple

L’exemple suivant crée une liste XML basée sur le mappage de schéma Contacts qui est attaché au classeur, puis utilise la méthode SetValue pour lier chaque colonne à un objet 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

Assistance et commentaires

Avez-vous des questions ou des commentaires sur Office VBA ou sur cette documentation ? Consultez la rubrique concernant l’assistance pour Office VBA et l’envoi de commentaires afin d’obtenir des instructions pour recevoir une assistance et envoyer vos commentaires.