Банк цб рф официальный сайт курсы валют на дату: Курсы валют ЦБ РФ на заданную дату, сегодня и завтра. Купить и продать валюту онлайн 2023

Загружаем курсы валют с сайта ЦБ через функцию ВЕБСЛУЖБА или VBA

09
марта
2022

 

Сергей Кикевич

 
Все авторы

Приложение к статье:
файл для скачивания

В EXCEL 2013 появилась замечательная функция ВЕБСЛУЖБА (WEBSERVICE). А старый способ параметризованных запросов через web query перестал работать. Поэтому я решил обновить информацию о том, как автоматически получать историю курсов валют с сайта Центрального банка ( cbr. ru ).

Впрочем, не всё так радужно … у команды ВЕБСЛУЖБА есть свои проблемы. Но обо всём по порядку.

Загрузка курсов валют через ВЕБСЛУЖБА

Сайт cbr.ru автоматически отдает информацию о курсах валют в формате XLM через нехитрый запрос (справка по API на сайте ЦБ):

http://www.cbr.ru/scripts/XML_dynamic.asp?date_req1=01.01.2022&date_req2=01.02.2022&VAL_NM_RQ=R01235

(можете скопировать в адресную строку браузера и посмотреть, что получится)

В запросе сразу видно, что нужно параметризировать, чтобы задать первую дату истории, последнюю дату и код валюты. R01235 – долл США (справочник по кодам валют ЦБ).

Для успешной загрузки данных в EXCEL необходимо вставить URL запроса в функцию ВЕБСЛУЖБА().

Удобства ради вставим ссылки на ячейки вместо дат и кода валюты:

ВЕБСЛУЖБА(“http://www.cbr.ru/scripts/XML_dynamic.asp?date_req1=
&ТЕКСТ(
A1;”ДД. ММ.ГГГГ”)&
&date_req2=
& ТЕКСТ(
A2;”ДД.ММ.ГГГГ”)&
&VAL_NM_RQ=”&A3)

Здесь потребовалось использовать функцию ТЕКСТ() для преобразования даты EXCEL в текстовый формат.

На выходе функции ВЕБСЛУЖБА получаем формат XML, который содержит историю данных котировок валюты.

С XML отлично справляется функция ФИЛЬТР.XML (FILTERXML). Она использует язык запросов XPath. Сам по себе этот язык несложный и очень полезный. Он позволяется легко «вытащить» нужную информацию из узлов XML документов. Если интересно познакомиться с ним поближе, пройдите несколько шагов обучения в W3Schools: XPath Syntax.

После обработки получаем то, за чем пришли:

Магия … если бы не одно «НО».

Сайт cbr.ru на запрос отвечает с некоторой задержкой. Когда, запрашивается небольшое количество данных, задержка небольшая, и всё нормально работает. Но, если глубина запрашиваемой истории значительная, то ВЕБСЛУЖБА реагирует на задержку, как на отказ API. Вместо красивой таблицы с данными получаем сообщение об ошибке: #ЗНАЧ. Похоже, что с этим поделать ничего нельзя, так как timeout в команде ВЕБСЛУЖБА не настраивается.

Получается, что для запроса значительного объема информации этот способ не годится. Тем не менее файл с образцом запроса вы можете скачать в конце статьи.

Загрузка курсов валют через VBA

Как обычно, когда начинаются сложности со встроенными функциями, на помощь приходит VBA. Небольшой скрипт помогает скачать любую глубину истории. Кроме того, можно выбрать между месячными и дневными данными.

Про то, как работает макрос на Visual Basic, я писать не буду. Это явно выходит за рамки этой статьи. Но разобраться в этом несложном скрипте может даже неспециалист.

В следующей статье, я продемонстрирую, как сделать такую же загрузку курсов валют в Таблицах Google (Google Sheets).

Примеры использования ВЕБСЛУЖБА и VBA для загрузки курсов валют ЦБ

Ниже вы можете загрузить примеры использования функции ВЕБСЛУЖБА и вариант с VBA для загрузки официальных курсов валют Центрального банка.

Внимание: прилагаемый файл EXCEL со скриптом VBA содержит макрос и предоставляется в формате .xlsm . Загрузка этого файла может быть заблокирована антивирусом, если он у вас установлен.

 



1 Доллар США

1 ЕВРО

с 31 июля 2021 года

73,1388

86,9913

с 30 июля 2021 года

73,1904

86,8624

с 29 июля 2021 года

73,6088

86,9173

с 28 июля 2021 года

73,8471

86,9919

с 27 июля 2021 года

74,0980

87,3171

с 26 июля 2021 года

73,7663

86,8451

с 25 июля 2021 года

73,7663

86,8451

с 24 июля 2021 года

73,7663

86,8451

с 23 июля 2021 года

73,6945

86,9227

с 22 июля 2021 года

74,4947

87,5983

с 21 июля 2021 года

74,4910

87,7727

с 20 июля 2021 года

74,3463

87,6097

с 19 июля 2021 года

74,1656

87,5673

с 18 июля 2021 года

74,1656

87,5673

с 17 июля 2021 года

74,1656

87,5673

с 16 июля 2021 года

74,2197

87,8316

с 15 июля 2021 года

74,1236

87,3917

с 14 июля 2021 года

74,0589

87,7820

с 13 июля 2021 года

74,6336

88,6050

с 12 июля 2021 года

74,4675

88,1397

с 11 июля 2021 года

74,4675

88,1397

с 10 июля 2021 года

74,4675

88,1397

с 9 июля 2021 года

75,1952

88,7755

с 8 июля 2021 года

74,0580

87,5588

с 7 июля 2021 года

73,2660

87,0034

с 6 июля 2021 года

73,3540

87,0272

с 5 июля 2021 года

73,6175

87,0748

с 4 июля 2021 года

73,6175

87,0748

с 3 июля 2021 года

73,6175

87,0748

со 2 июля 2021 года

72,9086

86,4113

с 1 июля 2021 года

72,7234

86,5118