Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Office Новый топик    Ответить
 Макрос для загрузки курсов валют из Интернета в Excel за определенный период (vba)  [new]
msleg
Member

Откуда: Москва
Сообщений: 537
Сделал форму для загрузки курсов валют с ЦБ РФ в Excel! Выкладываю для свободного пользования

К сообщению приложен файл (Форма для загрузки курсов ЦБ РФ.rar - 30Kb) cкачать
29 май 12, 15:55    [12632594]     Ответить | Цитировать Сообщить модератору
 Re: Макрос для загрузки курсов валют из Интернета в Excel за определенный период (vba)  [new]
PlanB
Member

Откуда: Moscow
Сообщений: 2725
msleg, могли б не париться и скачать из инета такую штуку
29 май 12, 17:53    [12633496]     Ответить | Цитировать Сообщить модератору
 Re: Макрос для загрузки курсов валют из Интернета в Excel за определенный период (vba)  [new]
msleg
Member

Откуда: Москва
Сообщений: 537
PlanB, что-то я замучился искать её. Проще было самому сварганить
30 май 12, 12:31    [12636498]     Ответить | Цитировать Сообщить модератору
 Re: Макрос для загрузки курсов валют из Интернета в Excel за определенный период (vba)  [new]
msleg
Member

Откуда: Москва
Сообщений: 537
PlanB,

Если не сложно скинь ссылки
30 май 12, 12:31    [12636503]     Ответить | Цитировать Сообщить модератору
 Re: Макрос для загрузки курсов валют из Интернета в Excel за определенный период (vba)  [new]
Озадаченый
Member

Откуда: Самара
Сообщений: 37
Вот мое творение.
Лист динамика- загружает курс по выбранному периоду с автозаполнением данных за выходные + сразу график рисует
для выбора дат, периодов используется стандартный календарь.
Для получения данных используется xml.
так же есть отдельный лист для курсов цб казахстана.
Весь код в подробных комментариях.
выкладывал несколько раз на planetaexcel.ru
Enjoy.

К сообщению приложен файл (курс_цб2.zip - 51Kb) cкачать
30 май 12, 16:27    [12638819]     Ответить | Цитировать Сообщить модератору
 Re: Макрос для загрузки курсов валют из Интернета в Excel за определенный период (vba)  [new]
Thermik
Member [скрыт]

Откуда:
Сообщений: 474
Может еще здесь есть рабочая надстройка, тоже умеет с валютами и диапазонами дат работать.

www.icqrobot.ru
30 май 12, 20:12    [12640032]     Ответить | Цитировать Сообщить модератору
 Re: Макрос для загрузки курсов валют из Интернета в Excel за определенный период (vba)  [new]
Чистая
Member

Откуда:
Сообщений: 9
Озадаченый, У меня не работает почему то ваш макрос ошибки выходят.
4 июн 12, 13:12    [12661256]     Ответить | Цитировать Сообщить модератору
 Re: Макрос для загрузки курсов валют из Интернета в Excel за определенный период (vba)  [new]
С0ВЕСТЬ
Member [заблокирован]

Откуда:
Сообщений: 38133
PlanB
msleg, могли б не париться и скачать из инета такую штуку


Вообще-то встроенные шаблоны давно есть!
И ничего искать не нужно.
4 июн 12, 21:51    [12664466]     Ответить | Цитировать Сообщить модератору
 Re: Макрос для загрузки курсов валют из Интернета в Excel за определенный период (vba)  [new]
Озадаченый
Member

Откуда: Самара
Сообщений: 37
to Чистая :
Если несложно выложите принтскрин ошибки.
написано в 2007 офисе, возможно могут быть ошибки из-за версий библиотек + в системе должны быть стандартные календари.
Конечно же для работы макроса нужен доступ в интернет.
Выкладываю последнюю версию, немного подчистил код и работу с графиком.

К сообщению приложен файл (курс_цб2.zip - 47Kb) cкачать
5 июн 12, 09:03    [12665482]     Ответить | Цитировать Сообщить модератору
 Re: Макрос для загрузки курсов валют из Интернета в Excel за определенный период (vba)  [new]
big-duke
Member

Откуда:
Сообщений: 6621
Озадаченый,

а зачем там mscal.ocx ? Из-за которого ничего не работает.
8 июн 12, 19:05    [12690351]     Ответить | Цитировать Сообщить модератору
 Re: Макрос для загрузки курсов валют из Интернета в Excel за определенный период (vba)  [new]
Озадаченый
Member

Откуда: Самара
Сообщений: 37
Всегда использую стандартные календари, на работе и у всех друзей проблем не возникает. Искать календари на стандартных элементах и встраивать их в книгу мне не интересно. Выкладываю версию без календарей и без формы выбора дат. Даты забиваются руками, потом нажать кнопку обновить. При желании можете вставить свои формы выбора дат.

К сообщению приложен файл (курс_цб3.zip - 52Kb) cкачать
9 июн 12, 09:54    [12692222]     Ответить | Цитировать Сообщить модератору
 Re: Макрос для загрузки курсов валют из Интернета в Excel за определенный период (vba)  [new]
msleg
Member

Откуда: Москва
Сообщений: 537
Плюс еще нашел инфу по этому вопросу http://www.planetaexcel.ru/tip.php?aid=91
14 июн 12, 10:13    [12711731]     Ответить | Цитировать Сообщить модератору
 Re: Макрос для загрузки курсов валют из Интернета в Excel за определенный период (vba)  [new]
Озадаченый
Member

Откуда: Самара
Сообщений: 37
дополню список интересных ссылок поданной тематике
http://www.planetaexcel.ru/forum.php/?thread_id=38057 - примеры от Konstantina работают на регулярных выражениях.

http://www.planetaexcel.ru/forum.php?thread_id=3816&page_forum=1&allnum_forum=28
вот тут хорошее обсуждение, интересные решения от zvi и от alex_st

еще есть вариант с веб-запросам тоже на планете в приемах описывается.
14 июн 12, 16:23    [12714763]     Ответить | Цитировать Сообщить модератору
 Re: Макрос для загрузки курсов валют из Интернета в Excel за определенный период (vba)  [new]
Озадаченый
Member

Откуда: Самара
Сообщений: 37
и еще правильный пример загрузки курсов цб (с использованием xml) от EducatedFool
http://excelvba.ru/code/CurrencyRate
14 июн 12, 16:29    [12714820]     Ответить | Цитировать Сообщить модератору
 Re: Макрос для загрузки курсов валют из Интернета в Excel за определенный период (vba)  [new]
Озадаченый
Member

Откуда: Самара
Сообщений: 37
Добавил выгрузку курсов валют Белоруссии. Лист Беларусь и temp2.

в ячейке b1 - дата начала текущего года
в ячейке c1 - текущая дата
в строке код валюты - укажите нужные вам коды валют (первый столбце на листе temp2)
в строке наименование - формула впр с листа temp2

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

плюс подчистил код, доработал работу с системным разделителем.

К сообщению приложен файл (курс_цб_3.zip - 85Kb) cкачать
20 июн 12, 10:34    [12743655]     Ответить | Цитировать Сообщить модератору
 Re: Макрос для загрузки курсов валют из Интернета в Excel за определенный период (vba)  [new]
Озадаченый
Member

Откуда: Самара
Сообщений: 37
проверил работу в 2003 и с разделителем точка. нашлись косяки - исправил.

К сообщению приложен файл (курс_цб_3.zip - 79Kb) cкачать
20 июн 12, 20:16    [12748746]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: Макрос для загрузки курсов валют из Интернета в Excel за определенный период (vba)  [new]
И_Павел_С
Member

Откуда:
Сообщений: 29
Тоже вставлю свои три копейки.
Озадаченый
и еще правильный пример загрузки курсов цб (с использованием xml) от EducatedFool
http://excelvba.ru/code/CurrencyRate

Как по мне это решение лучшее. И оно без проблем завелось в Access 2010 и 2016, а вот в Excel 2007 работать не захотела.
Но решение проблемы очень простое - дело в том, что данный скрипт почему-то не захотел работать без явного объявления переменных. Но объявив их все прекрасно заработало

Function GetRate(ByVal CurrencyName As String, ByVal RateDate As Date) As Double

    ' функция возвращает курс валюты CurrencyName на дату RateDate
    ' в случае ошибки (неверная дата или название валюты) возвращается 0

    On Error Resume Next
    Dim xmldoc As Object
    Dim url_Request As String
    Dim nodeList As Object
    Dim node_Attr As Object
    Dim xmlNode As Object
    Dim strDate As Date
    Dim i As Integer
    Dim CurrencyRate As Double
    Dim divisor As Double
  
    CurrencyName = UCase(CurrencyName): If Len(CurrencyName) <> 3 Then Exit Function
    Set xmldoc = CreateObject("Msxml.DOMDocument"): xmldoc.async = False
    url_Request = "http://www.cbr.ru/scripts/XML_daily.asp?date_req=" + Format(RateDate, "dd\/mm\/yyyy")
 
    If xmldoc.Load(url_Request) <> True Then Exit Function    ' Запрос к серверу ЦБР

    ' Обработка полученного ответа
    Set nodeList = xmldoc.SelectNodes("ValCurs"): Set xmlNode = nodeList.Item(0).CloneNode(True)
    Set node_Attr = xmlNode.Attributes(0): strDate = node_Attr.Value
    Set nodeList = xmldoc.SelectNodes("*/Valute")
    For i = 0 To nodeList.Length - 1     ' поиск нужной валюты
        Set xmlNode = nodeList.Item(i).CloneNode(True)
        If xmlNode.ChildNodes(1).Text = CurrencyName Then
            CurrencyRate = CDbl(xmlNode.ChildNodes(4).Text)
            divisor = Val(xmlNode.ChildNodes(2).Text)
            GetRate = CurrencyRate / divisor
            Exit Function
        End If
    Next
End Function

Возможно, конечно, что надо просто какую-либо галочку в настройках Tool -> References поставить, но я не на столько знаток.
11 янв 18, 15:42    [21097986]     Ответить | Цитировать Сообщить модератору
 Re: Макрос для загрузки курсов валют из Интернета в Excel за определенный период (vba)  [new]
The_Prist
Member

Откуда: www.excel-vba.ru
Сообщений: 1686
И_Павел_С
Возможно, конечно, что надо просто какую-либо галочку в настройках Tool -> References поставить
Нет, скорее всего надо обратить внимание на первые строки модуля, в который вставлялась функция. Предположу, что там есть строка Option Explicit, которая заставляет объявлять все переменные, используемые в процедурах и функциях модуля.
Плюс можно функцию значительно упростить, убрав там цикл - он не нужен: Получить курс валют от ЦБР. Смотрите вторую функцию(которая через XML)
12 янв 18, 09:07    [21099780]     Ответить | Цитировать Сообщить модератору
 Re: Макрос для загрузки курсов валют из Интернета в Excel за определенный период (vba)  [new]
И_Павел_С
Member

Откуда:
Сообщений: 29
The_Prist
скорее всего надо обратить внимание на первые строки модуля, в который вставлялась функция. Предположу, что там есть строка Option Explicit

Точно!
The_Prist
Получить курс валют от ЦБР. Смотрите вторую функцию(которая через XML)

Спасибо большое!!!
12 янв 18, 10:14    [21100069]     Ответить | Цитировать Сообщить модератору
 Re: Макрос для загрузки курсов валют из Интернета в Excel за определенный период (vba)  [new]
big-duke
Member

Откуда:
Сообщений: 6621
И_Павел_С,

Если у вас появится Excel 2013+, то для загрузки курсов с сайта ЦБ можно использовать Power Query.
12 янв 18, 13:53    [21101318]     Ответить | Цитировать Сообщить модератору
 Re: Макрос для загрузки курсов валют из Интернета в Excel за определенный период (vba)  [new]
И_Павел_С
Member

Откуда:
Сообщений: 29
big-duke,
ААА У меня да, есть 2016, про Power Query не знал. Погуглю, спасибо еще раз!
12 янв 18, 14:12    [21101433]     Ответить | Цитировать Сообщить модератору
 Re: Макрос для загрузки курсов валют из Интернета в Excel за определенный период (vba)  [new]
The_Prist
Member

Откуда: www.excel-vba.ru
Сообщений: 1686
И_Павел_С
У меня да, есть 2016, про Power Query не знал

Вот здесь подробно расписывал возможные варианты получения курса валют из PowerQuery:
Курс валют при помощи Power Query
12 янв 18, 14:30    [21101595]     Ответить | Цитировать Сообщить модератору
 Re: Макрос для загрузки курсов валют из Интернета в Excel за определенный период (vba)  [new]
И_Павел_С
Member

Откуда:
Сообщений: 29
The_Prist,
Спасибо!
12 янв 18, 14:35    [21101653]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft Office Ответить