Método XPath.SetValue (Excel)
Asigna el objeto XPath especificado a un objeto ListColumn o una colección Range. Si el objeto XPath se ha asignado anteriormente al objeto ListColumn o a la colección Range, el método SetValue establecerá las propiedades del objeto XPath.
Sintaxis
expresión. SetValue (Map, XPath, SelectionNamespace, Repeating)
Expresión Variable que representa un objeto XPath .
Parameters
Nombre | Obligatorio/opcional | Tipo de datos | Descripción |
---|---|---|---|
Map | Obligatorio | XmlMap | Información de asignación con la que estará asociado el rango asignado. |
XPath | Obligatorio | String | Expresión XPath válida que indica a Excel qué datos XML deben aparecer en este rango asignado. La cadena XPath también puede contener filtros válidos, en cuyo caso sólo aparecerá en este rango asignado un subconjunto de los datos a los que apunta XPath. |
SelectionNamespace | Opcional | Variant | Especifica los prefijos de espacio de nombres usados en el argumento XPath . Este argumento se puede omitir si el objeto XPath no contiene prefijos o si el objeto XPath utiliza los prefijos internos de Microsoft Excel. |
Repeating | Opcional | Variant | Especifica si el objeto XPath se enlazará a una columna de una lista XML o se asignará a una sola celda. Establezca su valor en True para enlazar el objeto XPath a una columna de una lista XML. False obliga a que se cree una celda no extensible. Si el intervalo es mayor que una sola celda y se especifica False , se produce un error en tiempo de ejecución. |
Comentarios
Consulte la propiedad IsExportable del objeto XMLMap para obtener una explicación sobre la compatibilidad con XPath en Excel. Si la expresión XPath no es válida o si el XPath especificado ya se ha asignado, se produce un error en tiempo de ejecución.
Si Excel no puede resolver el espacio de nombres, se produce un error en tiempo de ejecución.
Este método genera un error si se cumple alguna de las condiciones siguientes:
El rango ocupa varias columnas de la cuadrícula.
Parte del rango abarca celdas que ya están asignadas y el resto ocupa celdas no asignadas.
Parte del rango abarca una asignación, y otra parte del rango abarca una asignación distinta o una ruta XPath distinta de la misma asignación.
Si el rango es una sola celda, Excel crea de forma predeterminada una celda asignada de forma única y no repetición. A la celda no extensible no se le da ningún encabezado.
La excepción a la instrucción anterior se produce cuando el intervalo de una sola celda se encuentra dentro de un Objeto ListObject, en cuyo caso, la información de asignación se aplica a toda la columna.
Si el rango abarca varias celdas, Excel crea una lista XML repetida. Excel trata el rango seleccionado como todos los valores de datos, por lo que cuando se crea la lista XML, el rango se desplaza hacia abajo por una fila y el encabezado se coloca en la celda que ocupa la parte superior del rango. La fila insertada se sitúa en la parte inferior del rango desplazado.
Nota:
- El algoritmo de detección de encabezados de Excel no se utiliza en el modelo de objetos. Se da por supuesto que no hay encabezados en la cuadrícula.
- Las funciones de combinación y aumento automáticos están deshabilitadas al crear rangos asignados en el modelo de objetos.
Ejemplo:
En el ejemplo siguiente se crea una lista XML basada en el mapa de esquema Contactos que está asociado al libro y, a continuación, se usa el método SetValue para enlazar cada columna a un 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
Soporte técnico y comentarios
¿Tiene preguntas o comentarios sobre VBA para Office o esta documentación? Vea Soporte técnico y comentarios sobre VBA para Office para obtener ayuda sobre las formas en las que puede recibir soporte técnico y enviar comentarios.