Импорт курса валют из интернета

Импорт курса заданной валюты из интернета с автоматическим обновлением - весьма частая задача для многих пользователей Microsoft Excel. Представьте, что у вас есть прайс-лист, который должен пересчитываться каждое утро в соответствии с курсом. Или бюджет проекта. Или стоимость договора, которую надо посчитать, используя курс доллара на дату заключения договора.

В подобных ситуациях можно решить проблему по разному - всё зависит от того, какая версия Excel у вас установлена и какие надстройки поверх неё стоят.

Способ 1. Простой веб-запрос для текущего курса валют

Этот способ подойдет тем, у кого на компьютере пока ещё старые версии Microsoft Office 2003-2007. Он не использует никаких сторонних надстроек или макросов и оперирует только встроенными функциями.

Нажмите кнопку Из интернета (Web) на вкладке Данные (Data). В появившемся окне в строку Адрес (Address) введите URL сайта, с которого будет браться информация (например http://www.finmarket.ru/currency/rates/) и нажмите клавишу Enter.

webquery11.png

Когда страница загрузится, то на таблицах, которые Excel может импортировать, появятся черно-желтые стрелки. Щелчок по такой стрелке помечает таблицу для импорта.

Когда все необходимые таблицы помечены - нажмите кнопку Импорт (Import) внизу окна. Спустя некоторое время, нужное для загрузки данных, содержимое отмеченных таблиц появится в ячейках на листе:

webquery12.png

Для дополнительной настройки можно щелкнуть по любой из этих ячеек правой кнопкой мыши и выбрать в контекстном меню команду Свойства диапазона (Data range properties). В этом диалоговом окне, при желании, возможно настроить периодичность обновления и другие параметры:

webquery13.png

Котировки акций, т.к. они меняются каждые несколько минут, можно обновлять почаще (флажок Обновлять каждые N мин.), а вот курсы валют, в большинстве случаев, достаточно обновлять раз в день (флажок Обновление при открытии файла).

Обратите внимание, что весь импортированный диапазон данных воспринимается Excel как единое целое и получает собственное имя, которое можно увидеть в Диспетчере имен на вкладке Формулы (Formulas - Name Manager).

Способ 2. Параметрический веб-запрос для получения курса валют на заданный интервал дат

Этот способ представляет собой слегка модернизированный первый вариант и дает пользователю возможность получать курс нужной валюты не только на текущий день, но и на любую другую интересующую дату или интервал дат. Для этого наш веб-запрос надо превратить в параметрический, т.е. добавить к нему два уточняющих параметра (код нужной нам валюты и текущую дату). Для этого делаем следующее:

1. Создаем веб-запрос (см. способ 1) к странице сайта Центробанка России с архивом курсов: http://cbr.ru/currency_base/dynamics.aspx

2. В форме слева выбираем нужную валюту и задаем начальную и конечную даты:

webquery14.png

3. Жмем кнопку Получить данные и через пару секунд видим таблицу с нужными нам значениями курса на заданном интервале дат. Прокручиваем полученную таблицу вниз до упора и помечаем ее для импорта, щелкнув по черно-желтой стрелке в левом нижнем углу вебстраницы (только не спрашивайте почему эта стрелка находится там, а не рядом с таблицей - это вопрос к дизайнерам сайта).

Теперь ищем в правом верхнем углу окна кнопку с дискетой Сохранить запрос (Save Query) и сохраняем файл с параметрами нашего запроса в любую подходящую папку под любым удобным именем - например в Мои документы под именем cbr.iqy.  После этого окно веб-запроса и весь Excel можно пока закрыть.

4. Открываем папку, куда сохранили запрос и ищем файл запроса cbr.iqy, затем щелкаем по нему правой кнопкой мыши - Открыть с помощью - Блокнот (или выбрать его из списка - обычно это файл Notepad.exe из папки C:\Windows). После открытия файла запроса в Блокноте должны увидеть примерно следующее:

webquery15.png

Самое ценное здесь - строка с адресом и параметры запроса в ней, которые мы будем подставлять - код нужной нам валюты (выделено красным) и конечная дата, которую мы заменим на сегодняшнюю (выделено синим). Аккуратно редактируем строку, чтобы получилось следующее:

http://cbr.ru/currency_base/dynamics.aspx?VAL_NM_RQ=["Код валюты"]&date_req1=01.01.2000&r1=1&date_req2=["Дата"]&rt=1&mode=1

Все остальное оставляем как есть, сохраняем и закрываем файл.

5. Создаем новую книгу в Excel, открываем лист, куда хотим импортировать архив курсов ЦБ. В любую подходящую ячейку вводим формулу, которая даст нам текущую дату в текстовом формате для подстановки в запрос:

=ТЕКСТ(СЕГОДНЯ();"ДД.ММ.ГГГГ")

или в английской версии

=TEXT(TODAY(),"dd.mm.yyyy")

Куда-нибудь рядом вводим код нужной нам валюты из таблицы:

Валюта

Код   

Доллар США

R01235

Евро

R01239

Фунт стерлингов

R01035

Японская иена

R01820

Нужный код также можно подсмотреть в строке запроса прямо на сайте ЦБ.

6. Загружаем данные на лист, используя в качестве основы созданные ячейки и файл cbr.iqy, т.е. идем на вкладку Данные - Подключения - Найти другие (Data - Existing Connections). В открывшемся окне выбора источника данных находим и открываем файл cbr.iqy. Перед импортом Excel уточнит у нас три момента.

Во-первых, куда импортировать таблицу с данными:

webquery16.png

Во-вторых, откуда брать код валюты (можно установить флажок Использовать данное значение по умолчанию (Use this value/reference for future refreshes), чтобы не указывать потом каждый раз эту ячейку при обновлениях и флажок Автоматически обновлять при изменении значения ячейки (Refresh automatically when cell value changes):

webquery17.png

В-третьих, из какой ячейки брать конечную дату (тут также можно установить оба флажка, чтобы завтра не пришлось задавать эти параметры вручную при обновлении):

webquery18.png

Жмем ОК, ждем пару секунд и получаем полный архив курса нужной валюты на листе:

webquery19.png

Как и в первом способе, щелкнув правой кнопкой мыши по импортированным данными и выбрав команду Свойства диапазона (Data range properties), можно настроить частоту обновления При открытии файла (Refresh on file open). Тогда при наличии доступа к интернету данные будут автоматически обновляться каждый день, т.е. таблица будет самостоятельно дополняться новыми данными.

Вытаскивать из нашей таблицы курс за нужную дату проще всего с помощью функции ВПР (VLOOKUP) - если вы с ней не знакомы, то очень советую сделать это. Вот такой формулой, например, можно выбрать из нашей таблицы курс доллара за 10 января 2000 года:

webquery21.png

или в англоязычном варианте =VLOOKUP(E5,cbr,3,1)

где

  • E5 - ячейка, где лежит заданная дата
  • cbr - имя диапазона данных (автоматически создается при импорте и обычно совпадает с именем файла запроса)
  • 3 - порядковый номер столбца в нашей таблице, откуда мы берем данные
  • 1 - аргумент, включающий для функции ВПР приблизительный поиск, чтобы можно было находить курсы и для тех промежуточных дат, которые фактически не присутствуют в столбце А (будет браться ближайшая предыдущая дата и ее курс). Подробнее про приблизительный поиск с помощью функции ВПР можно понятно почитать тут.

Ссылки по теме


Страницы: 1  2  
18.12.2014 10:14:45
Здравствуйте, Николай. Появилась потребность сделать прайс с привязкой к валюте. Скачал Ваш пример. Для себя оставил только лист с курсом на сегодня (статистика по годам мне не нужна). На домашнем компьютере входящая информация адекватная: числа - это числа, с которыми можно производить математические вычисления. На рабочем какой-то формат, который даже из текста в число не переводится. На обоих Excel 10. Может какие-то настройки нужно пошерстить? Пробовал менять  запятую на точку - никакой реакции. Прайсы я сделал, но каждый день вводить значения по курсу не каждый сотрудник будет. Хочу все-таки привязать к ЦБ. Подскажите, пожалуйста, что не так. Заранее благодарен. Вадим.

В настройках книги заменил наоборот точку на запятую - все работает. Извините.
23.01.2015 09:46:14
Здравствуйте!  А как настроить обновление внешних данных если фаил открыт для общего доступа? Каждый раз закрывать и открывать доступ не вариант, так как с файлом  этот момент могут работать другие пользователи.
17.04.2015 18:33:54
Здравствуйте, как сделать подобное только для индексов РТС или ММВБ?
23.04.2015 13:50:44
Добрый день! Николай можно ли сделать такой запрос для того, чтобы вытащить котировки с сайта ММВБ?
15.06.2015 02:14:52
Доброго времени суток! Действительно, заманчиво! Появилась идея на базе импорта курса валют скреативить тоже самое, но, например, с ценами на авиабилеты с сайта Skyscanner. Там, к сожалению, нет архива, но цены обновляются 1-2 раза в сутки. Как Вы думаете, реально?
23.07.2015 16:38:39
http://www.finmarket.ru/currency/rates/  заблокировал себя на парсинг, подскажите пожалуйста, откуда еще можно тянуть инфу по курсу?
28.07.2015 14:46:35
Доброго всем дня!
Кто-нибудь нашёл сайт с которого Excel логично читает курсы валют с разделителями запятыми?
Вчера попробовал всё, что предлагается выше ничего не получилось.
Убил три часа.
29.07.2015 20:36:23
Доброго. Я беру данный с inline.ru
29.07.2015 21:25:32
У меня этот сайт Excel не разобрал по блокам.
29.07.2015 21:53:12
Теперь пишет произошла ошибка сценария.
30.07.2015 07:33:17
У меня тоже помню выдавал ошибки сценария на старом компе.
Дело возможно в Вашем компьютере.
Вернее в настройках ОС.
30.07.2015 12:03:31
Здесь всё сложно.
-возможно ОС + какие обновления стоят
- возможно Excel какая версия + какие настройки + какие обновления.
И т.д.
22.08.2015 01:58:33
Добрый день!

Естественно присоединяюсь ко всем восхищенным отзывам о данном ресурсе и благодарю автора и всех кто делится ценными знаниями.

Свой вопрос удалил.
Нашел причину, которая не относится к теме.
23.12.2015 13:24:44
Николай, добрый день.
Подскажите, пожалуйста, как вставить текущую дату в сам запрос (с сайта cbr.ru), чтобы не писать формулу в excel?
Мне нужно выгружать курсы по всем валютам ежедневно на текущую дату. Но на сайте cbr.ru в запросе стоит выбранная дата, которую я хочу изменить на переменную, которая будет каждый день выдавать именно текущую дату, а не ту, которую я выбрала сегодня:
http://www.cbr.ru/currency_base/daily.aspx?date_req=23.12.2015


Такой запрос не работает: http://www.cbr.ru/currency_base/daily.aspx?date_req=Currentdate

Что же делать?
http://www.finmarket.ru не подходит, потому что он часто не обновляет запрос по полдня. Хотя на этом сайте можно получить нужную информацию в том виде, в котором мне нужно.
Заранее спасибо.
29.01.2017 14:07:51
Николай добрый день.

Присоединяюсь к вопросу Натальи:

1. Задача: при открытии файла осуществлять выгрузку актуального курса валют (на текущую дату) с сайта ЦБ РФ.
На сегодняшний день выгрузка курсов/ создание динамического диапазона идет по запросу на сайт вида:

http://cbr.ru/currency_base/daily.aspx?date_req=28.01.2017


т.е. данные экспортируются на текущую дату. и при последующем открытии автообновление курсов не будет производиться.
(т.е будет для первоначальной даты).

т.е. для будущей даты будет необходимо по новой осуществлять выгрузку данных, создавая другой запрос.

2. Вопрос: Как можно сделать автовыгрузку/ автозамену для будущих значений данных.?

Алексей.
23.12.2015 15:04:37
Добрый день! Решила воспользоваться Вашей статьей, но к сожалению у меня не вышло(

Сохранила файл с расширением .iqy (но не смогла выделить саму таблицу, поэтому выгружаю всю страницу)
Открыла в блокноте файл и заменила вот таким образом:    
http://www.cbr.ru/currency_base/dynamics.aspx?VAL_NM_RQ=R01235&date_req1=["Дата1"]&date_req2=["Дата2"]&rt=1&mode=1

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

Подскажите пожалуйста, в чем моя ошибка?
28.12.2015 16:09:02
Добрый день! Много раз пробовал сделать загрузку, но каждый раз у меня загружаются сайты без стрелок. Даже повторяя все то, что показано на видео, у  меня все грузится без них. Пробовал с разных компьютеров, с версий 2013, 2010, 2007. В чем может быть проблема?
31.05.2016 07:27:48
Добрый день! Спасибо вам за пример!

Хотел уточнить, я делаю тоже самое для курсов с Нацбанка Казахстана. Проблема в том, что файл .iqy при открытии дает следующую ссылку:

http://www.nationalbank.kz/?docid=747&switch=russian

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

С уважением,
Максим
08.06.2016 10:28:15
Круто! Пересчитал кредит взятый в  рублях в 2012г в $США. Получилось что взял $16 000 а уплатил со всеми процентами только $15 200.:D
05.09.2016 17:11:25
Спасибо! У меня получилось! настроить автоматический расчет суммы отгрузки в рублях (при спецификации в долларах), с несколькими частичными предоплатами от разных дат и с отсрочкой платежа оставшейся части стоимости!  8):D
15.09.2016 12:44:55
Добрый день, очень полезная статься, благодарю автора за подробное разъяснение, но вот столкнулся с проблемой не могу импортировать данные из странички https://www.nissan.kz/vehicles/new-vehicles/almera/price-specifications.html

пишет следующее: не удается скачать нужные данные

Подскажите пожалуйста в чем проблема и как ее решить?

excel 2010.
05.04.2017 02:46:00
Николай, добрый день.
по первому примеру выдает следующую ошибку

Этот веб-запрос не возвращает данные.
как устранить эту проблему?
спасибо
15.06.2017 16:05:36
Добрый день!

А я могу ставить границы на таблицу? Он будет обновляться?
13.07.2017 03:49:38
Добрый день! все сделал как указано в первом примере с ресурса http://www.finmarket.ru/currency/rates/ но при получении данных выдает сообщение следующего содержания:
"Этот веб-запрос не возвращает данные. Чтобы изменить запрос, нажмите кнопку 'ОК’, раскройте список имен в строке формул, выберите имя диапазона внешних данных, который используется для этого веб-запроса, щелкните его правой кнопкой мыши и выберите команду Изменить запрос"
К то сталкивался с подобным и решил эту проблему помогите пожалуйста.
Спасибо.
09.08.2017 16:57:07
Добрый день. А можно ли в макросе сделать авторизацию на сайте внутри веб запроса? Вне веб-запроса авторизация не помогает достать все данные. HELP!
03.12.2017 13:02:04
Здравствуйте Николай,
Попробовал импортировать курс валют как Вы и говорили во втором варианте. но к сожалению не получается.
Дело в том, что сохраненный файл в формате ( iqy ) выглядит несколько иначе чем тот что у вас.
Вот так выглядит мой файл:


WEB
1
http://www.nationalbank.kz/?furl=cursFull&switch=rus

Selection=11
Formatting=None
PreFormattedTextToColumns=True
ConsecutiveDelimitersAsOne=True
SingleBlockTextImport=False
DisableDateRecognition=False
DisableRedirections=False



Информацию по курсу я беру с сайта http://www.nationalbank.kz/?switch=russian
И меня интересует курс Российского рубля к Казахстанскому тенге
24.06.2019 10:56:19
Добрый день! Николай, столкнулась с такой проблемой- курс ЦБ в понедельник остался на пятничную дату, а у меня в в ячейке стоит функция сегодня, т.е. понедельника, формула =ИНДЕКС(EUR!A10:A120;ПОИСКПОЗ(I4;EUR!C10:C120;0)) выдает ошибку т.к. не находит сегодняшнюю дату в списке ЦБ. Подскажите пожалуйста, как можно решить эту проблему?
21.03.2020 17:44:33
Как  в экселе 2019 года сохранять файл веб-запроса для Microsoft Excel (.iqy) в формате .iqy
Об этом есть  видео  - https://www.youtube.com/watch?v=8KQchkmFGsI   но там видимо эксель 16 года, и там внутренний браузер работает по другому
31.03.2020 16:06:08
Всем читающим кто пробовал в 2019 версии сейчас стрелки пропали для выбора полей мистика какая то, кто подскажет как вернуть?
02.04.2020 12:16:27
В 2019 версии для импорта курса лучше не использовать этот устаревший механизм.
Теперь для этого есть Power Query (в 2019 версии он встроен по умолчанию).
02.04.2020 13:17:48
Благодарю Николай можно ссылку на урок по работе? :)
04.06.2020 13:52:46
Обоими руками за обновлением урока по выгрузке курса валют )
04.06.2020 13:51:53
Здравствуйте, попробовал через PQ в MO2019 реализовать выгрузку курса валют из интернета с технических ресурсов CBR используя XML по 1-му примеру. Вывел только 3 столбца без наполнения. Подскажите может другой пример использовать?
04.06.2020 14:16:05
Реализовал через cbr.ru/currency_base/daily/
С помощью PQ. Посмотрим будет ли обновляться.
07.04.2020 13:09:09
Добрый день, до недавнего времени работал этот "устаревший" способ для эксель 2010, но в связи с изменением дизайна сайта ЦБ перестал. Подскажете, откуда теперь брать данные, определяемые запросов cbr.iqy, не получилось найти адрес, аналогичный предыдущему сbr.ru/currency_bаse/dynamics.аspx?
23.02.2023 13:59:18
Николай скажите пожалуйста я правильно понимаю что на сегодня цбрф закрыл описанную вами возможость скачивания информации?
спасибо!
Страницы: 1  2  
Наверх