Поделиться через


Метод XPath.SetValue (Excel)

Сопоставляет указанный объект XPath с объектом ListColumn или коллекцией Range . Если объект XPath ранее сопоставлялся с объектом ListColumn или коллекцией Range , метод SetValue задает свойства объекта XPath .

Синтаксис

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

Выражение Переменная, представляющая объект XPath .

Параметры

Имя Обязательный или необязательный Тип данных Описание
Map Обязательный XmlMap Сведения о карте, с которым будет связан сопоставленный диапазон.
XPath Обязательный String Допустимое выражение XPath, указывающее Excel, какие XML-данные должны отображаться в этом сопоставленном диапазоне. Строка XPath также может содержать допустимые фильтры. В этом сопоставленном диапазоне будет отображаться только подмножество данных, на которые указывает XPath.
SelectionNamespace Необязательный Variant Указывает префиксы пространства имен, используемые в аргументе XPath . Этот аргумент можно опустить, если объект XPath не содержит префиксов или объект XPath использует внутренние префиксы Microsoft Excel.
Repeating Необязательный Variant Указывает, должен ли объект XPath быть привязан к столбцу в XML-списке или сопоставлен с одной ячейкой. Задайте значение True , чтобы привязать объект XPath к столбцу в xml-списке. Значение False приводит к созданию неповторяющейся ячейки. Если диапазон больше одной ячейки и задано значение False , возникает ошибка во время выполнения.

Замечания

Сведения о поддержке XPath в Excel см. в свойстве IsExportable объекта XMLMap . Если выражение 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 и обратная связь.