Есть у Николая статья где разбирается пример, в котором с помощью VBA можно получить курс доллара для любой заданной даты. Хотелось бы реализовать тоже самое, но с применением новых формул 2013 версии Excel. Делаю так, в одну из ячеек ввожу запрос с сайта ЦБ http://www.cbr.ru/scripts/XML_daily.asp?date_req=02/03/2002. С помощью функции "ВЕБСЛУЖБА" получаю XML этого запроса. А дальше пытаюсь с помощью функции "ФИЛЬТР.XML" получить конкретное значение. Проблема в том, что в качестве второго аргумента этой функции используется Xpath, который похоже я составил неправильно "/ValCurs/Valute/Value", потому что в ячейке вылезает ошибка #ЗНАЧ. Вот сам XML запрос . Подскажите пожалуйста, как сделать это правильно
К сожалению пока не получается, в том числе и с путем предложенным вами. Буду разбираться. Спасибо за наводку на решение VBA, тоже интересовал этот вопрос
'Функция : Курс валют
Function КурсЦБРФ(Optional КодВалюты As String = "USD", Optional ДатаКурса As Date)
With CreateObject("MSXML2.DOMDocument")
.async = False
.Load ("[URL=http://www.cbr.ru/scripts/XML_daily.asp?date_req=]http://www.cbr.ru/scripts/XML_daily.asp?date_req=[/URL]" & Format$(IIf(ДатаКурса, ДатаКурса, Now), "dd.mm.yyyy"))
КурсЦБРФ = CDbl(.SelectSingleNode("*/Valute[CharCode='" & UCase(КодВалюты) & "']").ChildNodes(4).Text) / _
CDbl(.SelectSingleNode("*/Valute[CharCode='" & UCase(КодВалюты) & "']").ChildNodes(2).Text)
End With
End Function
А не воспользоваться ли PQ? Передать в запрос дату и код валюты, и обработать таблицу, вернув нужное. Конкретно с данными не разбирался, но страница нормально отвечает как источник данных.
flyboard написал: Очень актуально. Но все равно не пашет.
Пашет, просто надо B1 в формуле заменить на функцию СЕГОДНЯ(), если нужен курс на сегодня. Получается =ФИЛЬТР.XML(ВЕБСЛУЖБА("www.cbr.ru/scripts/XML_daily_eng.asp?date_req=" & ТЕКСТ(СЕГОДНЯ();"дд/ММ/гггг"));"//Valute[@ID='R01235']/Value")