Метод XPath.SetValue (Excel)

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

Синтаксис

выражение. 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 , возникает ошибка во время выполнения.

Примечания

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