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 Obligatoire XmlMap Informations de mappage à laquelle la plage mappée sera associée.
XPath Obligatoire String Expression XPath valide indiquant à Excel les données XML qui 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 pointées par XPath apparaîtra dans cette plage mappée.
Espace de noms de la sélection Facultatif Variant Spécifie 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 d’une liste XML ou mappé à une cellule unique. Définissez la valeur True pour lier l’objet XPath à une colonne d’une liste XML. La valeur FAUX force la création d’une cellule non répétitive. Si la plage est supérieure à une seule cellule et que False est spécifié, une erreur d’exécution se produit.

Remarques

Voir la propriété IsExportable de l’objet XMLMap pour plus d’informations 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 produit 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 cellule unique, Excel crée par défaut une cellule mappée unique 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 de cellules uniques 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étitive. Excel traite la plage sélectionnée comme toutes les valeurs de données, de sorte que, lorsque la liste XML est créée, la plage est décalée d’une ligne vers le bas et l’en-tête est placé dans la cellule occupée en 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’aucun en-tête n’existe 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 la carte de schéma des contacts attachée 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.