Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Не удается получить значения из xml - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Не удается получить значения из xml (Макросы/Sub)
Не удается получить значения из xml
jun Дата: Понедельник, 08.03.2021, 16:56 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 141
Репутация: 42 ±
Замечаний: 0% ±

Добрый день!
Вопрос по коду выбора курса валют за указанную дату:
[vba]
Код

Sub KURS()
Dim xmldoc, nodeList, RateDate As Date, Result
On Error Resume Next
RateDate = "03.03.2021"
Set xmldoc = CreateObject("Msxml2.DOMDocument"): xmldoc.async = False

If Not xmldoc.Load("https://cbu.uz/ru/arkhiv-kursov-valyut/xml/all/" & _
Format(RateDate, "yyyy-mm-dd") & "/") Then Exit Sub
Set nodeList = xmldoc.SelectNodes("//CcyNtry[@ID='840']")

Result = nodeList.NodeValue ' в этой строке я обращаюсь к свойству объекта xmlNodes - NodeValue. Возвращает пустое значение

Debug.Print nodeList
End Sub
[/vba]

Почему Result возвращает пустое значение? Что можно почитать по работе с xml из Excel?

Всем большое спасибо!


Сообщение отредактировал jun - Понедельник, 08.03.2021, 16:59
 
Ответить
СообщениеДобрый день!
Вопрос по коду выбора курса валют за указанную дату:
[vba]
Код

Sub KURS()
Dim xmldoc, nodeList, RateDate As Date, Result
On Error Resume Next
RateDate = "03.03.2021"
Set xmldoc = CreateObject("Msxml2.DOMDocument"): xmldoc.async = False

If Not xmldoc.Load("https://cbu.uz/ru/arkhiv-kursov-valyut/xml/all/" & _
Format(RateDate, "yyyy-mm-dd") & "/") Then Exit Sub
Set nodeList = xmldoc.SelectNodes("//CcyNtry[@ID='840']")

Result = nodeList.NodeValue ' в этой строке я обращаюсь к свойству объекта xmlNodes - NodeValue. Возвращает пустое значение

Debug.Print nodeList
End Sub
[/vba]

Почему Result возвращает пустое значение? Что можно почитать по работе с xml из Excel?

Всем большое спасибо!

Автор - jun
Дата добавления - 08.03.2021 в 16:56
doober Дата: Понедельник, 08.03.2021, 22:33 | Сообщение № 2
Группа: Друзья
Ранг: Ветеран
Сообщений: 947
Репутация: 323 ±
Замечаний: 0% ±

Excel 2010
Ищите в сети xPath
[vba]
Код
Sub KURS()
    Dim xmldoc, nodeList, RateDate As Date, Result
    On Error Resume Next
    RateDate = "03.03.2021"
    Set xmldoc = CreateObject("Msxml2.DOMDocument"): xmldoc.async = False

    If Not xmldoc.Load("https://cbu.uz/ru/arkhiv-kursov-valyut/xml/all/" & _
                       Format(RateDate, "yyyy-mm-dd") & "/") Then Exit Sub
    Set nodeList = xmldoc.SelectSingleNode("//CcyNtry[@ID='840']/Rate")
    Result = nodeList.Text
    ''  как можно объект вывести в консоль Debug.Print nodeList
End Sub
[/vba]


 
Ответить
СообщениеИщите в сети xPath
[vba]
Код
Sub KURS()
    Dim xmldoc, nodeList, RateDate As Date, Result
    On Error Resume Next
    RateDate = "03.03.2021"
    Set xmldoc = CreateObject("Msxml2.DOMDocument"): xmldoc.async = False

    If Not xmldoc.Load("https://cbu.uz/ru/arkhiv-kursov-valyut/xml/all/" & _
                       Format(RateDate, "yyyy-mm-dd") & "/") Then Exit Sub
    Set nodeList = xmldoc.SelectSingleNode("//CcyNtry[@ID='840']/Rate")
    Result = nodeList.Text
    ''  как можно объект вывести в консоль Debug.Print nodeList
End Sub
[/vba]

Автор - doober
Дата добавления - 08.03.2021 в 22:33
jun Дата: Суббота, 13.03.2021, 14:18 | Сообщение № 3
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 141
Репутация: 42 ±
Замечаний: 0% ±

Решил вопрос обращением к дочернему элементу узла следующим кодом:
[vba]
Код
Sub КУРСДОЛЛАРА_UZ()
    Dim xmldoc, nodeList, Result, RateDate As Date
    RateDate = "11.12.2018"
    On Error Resume Next
    Set xmldoc = CreateObject("Msxml2.DOMDocument"): xmldoc.async = False
    
    If Not xmldoc.Load("https://cbu.uz/ru/arkhiv-kursov-valyut/xml/all/" & _
        Format(RateDate, "yyyy-mm-dd")) Then Exit Sub
    Set nodeList = xmldoc.SelectNodes("//CcyNtry[@ID='840']")
    If nodeList.Length Then
        Result = nodeList.Item(0).ChildNodes(7).Text
        Debug.Print Result
    End If
End Sub
[/vba]

Всем спасибо!
 
Ответить
СообщениеРешил вопрос обращением к дочернему элементу узла следующим кодом:
[vba]
Код
Sub КУРСДОЛЛАРА_UZ()
    Dim xmldoc, nodeList, Result, RateDate As Date
    RateDate = "11.12.2018"
    On Error Resume Next
    Set xmldoc = CreateObject("Msxml2.DOMDocument"): xmldoc.async = False
    
    If Not xmldoc.Load("https://cbu.uz/ru/arkhiv-kursov-valyut/xml/all/" & _
        Format(RateDate, "yyyy-mm-dd")) Then Exit Sub
    Set nodeList = xmldoc.SelectNodes("//CcyNtry[@ID='840']")
    If nodeList.Length Then
        Result = nodeList.Item(0).ChildNodes(7).Text
        Debug.Print Result
    End If
End Sub
[/vba]

Всем спасибо!

Автор - jun
Дата добавления - 13.03.2021 в 14:18
doober Дата: Суббота, 13.03.2021, 15:59 | Сообщение № 4
Группа: Друзья
Ранг: Ветеран
Сообщений: 947
Репутация: 323 ±
Замечаний: 0% ±

Excel 2010
Решил вопрос обращением к дочернему элементу узла

Так не делается, или перебираете дочерние элементы и по имени определяете нужный, или через SelectSingleNode.
Порядок может поместятся в любой момент


 
Ответить
Сообщение
Решил вопрос обращением к дочернему элементу узла

Так не делается, или перебираете дочерние элементы и по имени определяете нужный, или через SelectSingleNode.
Порядок может поместятся в любой момент

Автор - doober
Дата добавления - 13.03.2021 в 15:59
lebensvoll Дата: Суббота, 13.03.2021, 16:02 | Сообщение № 5
Группа: Проверенные
Ранг: Старожил
Сообщений: 1002
Репутация: 30 ±
Замечаний: 0% ±

Excel 2010
jun, надеюсь это оно!?
My WebPage


Кто бы ты ни был, мир в твоих руках
 
Ответить
Сообщениеjun, надеюсь это оно!?
My WebPage

Автор - lebensvoll
Дата добавления - 13.03.2021 в 16:02
jun Дата: Суббота, 13.03.2021, 16:55 | Сообщение № 6
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 141
Репутация: 42 ±
Замечаний: 0% ±

Так не делается, или перебираете дочерние элементы и по имени определяете нужный, или через SelectSingleNode.


Понял, спасибо! Не подумал о порядке элементов в xml.

надеюсь это оно!?


Да, спасибо!

Может кто подскажет, есть ли какая-нибудь литература или статьи по работе с xml из VBA?
 
Ответить
Сообщение
Так не делается, или перебираете дочерние элементы и по имени определяете нужный, или через SelectSingleNode.


Понял, спасибо! Не подумал о порядке элементов в xml.

надеюсь это оно!?


Да, спасибо!

Может кто подскажет, есть ли какая-нибудь литература или статьи по работе с xml из VBA?

Автор - jun
Дата добавления - 13.03.2021 в 16:55
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Не удается получить значения из xml (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!