XPath.SetValue 方法 (Excel)

将指定的 XPath 对象映射到 ListColumn 对象或 Range 集合。 如果 XPath 对象先前已被映射到 ListColumn 对象或 Range 集合,则 SetValue 方法将设置 XPath 对象的属性。

语法

表达式SetValue (MapXPathSelectionNamespaceRepeating)

表达 一个代表 XPath 对象的变量。

参数

名称 必需/可选 数据类型 说明
Map 必需 XmlMap 将与映射区域相关联的映射信息。
XPath 必需 字符串 一个有效的 XPath 表达式,指示 Excel 应在该映射区域中显示哪些 XML 数据。 XPath 字符串可能还包含有效筛选;在这种情况下,该映射区域只会显示 XPath 指向的数据的子集。
SelectionNamespace 可选 Variant 指定 XPath 参数中使用的任何命名空间前缀。 如果 XPath 对象不包含任何前缀,或者 XPath 对象使用了 Microsoft Excel 内部前缀,将省略该参数。
Repeating 可选 Variant 指定 XPath 对象是绑定到 XML 列表中的列还是映射到单个单元格。 设置为 True 会将 XPath 对象绑定到 XML 列表的某一列。 设置为 False 会强制创建不重复的单元格。 如果范围大于单个单元格,并且指定了 False ,则会发生运行时错误。

备注

有关 Excel 中 XPath 支持的讨论,请参阅 XMLMap 对象的 IsExportable 属性。 如果 XPath 表达式无效,或者指定的 XPath 已映射,则会发生运行时错误。

如果 Excel 无法解析命名空间,则会发生运行时错误。

如果满足以下任一条件,此方法将产生错误:

  • 区域跨网格中的多个列。

  • 区域的某个部分包含已经映射的单元格,剩余部分包含未映射的单元格。

  • 区域的某一部分包含一个映射,而另一部分包含了不同映射或同一映射中的不同 XPath。

如果区域是单个单元格,则 Excel 默认创建一个映射的、非重复的映射单元格。 此不重复单元格无标题。

当单单元格区域位于 ListObject 中时,将发生上述语句的异常,在这种情况下,映射信息将应用于整个列。

如果区域跨越多个单元格,Excel 会创建重复的 XML 列表。 Excel 将所选区域视为所有数据值,因此在创建 XML 列表时,区域将向下移动一行,并将标题置于该区域顶部占用的单元格中。 插入行位于移动后的区域的底部。

注意

  • 对象模型中不使用 Excel 的标题检测算法。 这里假设网格中不存在标题。
  • 在对象模型中创建映射区域时,将禁用自动合并和自动扩大。

示例

以下示例基于附加到工作簿的联系人架构映射创建 XML 列表,然后使用 SetValue 方法将每列绑定到 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

支持和反馈

有关于 Office VBA 或本文档的疑问或反馈? 请参阅 Office VBA 支持和反馈,获取有关如何接收支持和提供反馈的指南。