Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.07.2010, 15:35   #1
Евгений К.
Пользователь
 
Регистрация: 03.06.2010
Сообщений: 11
По умолчанию курс доллара

Добрый день.
Помогите с макросом.
У меня в исходниках цены даны в долларах, а мне нужны в рублях. Я нашел в инете макрос:

Код:
Sub GetDollar()   
   Dim sURI As String  
    Dim oHttp As Object  
    Dim htmlcode, outstr As String  
    Dim inpdate As Date  
    Dim d, m, y As Integer  
       
    inpdate = CDate(InputBox("Введите дату в формате ДД.ММ.ГГГГ", _   
        "Курс доллара", Date))   
    d = Format(inpdate, "dd")   
    m = Format(inpdate, "mm")   
    y = Format(inpdate, "yyyy")   
    sURI = "http://cbr.ru/currency_base/daily.aspx?C_month=" & M & "&C_year=" _   
                  & y & "&date_req=" & d & "%2F" & M & "%2F" & y   
    On Error Resume Next  
    Set oHttp = CreateObject("MSXML2.XMLHTTP")   
    If Err.Number <> 0 Then  
        Set oHttp = CreateObject("MSXML.XMLHTTPRequest")   
    End If  
    On Error GoTo 0   
    If oHttp Is Nothing Then  
        Exit Sub  
    End If  
    oHttp.Open "GET", sURI, False  
    oHttp.Send   
    htmlcode = oHttp.responseText   
    outstr = Mid(htmlcode, InStr(1, htmlcode, "USD") + 87, 7)   
    Set oHttp = Nothing  
    outstr = Replace(outstr, ",", ".")   
    ActiveCell.Value = outstr   
End Sub
данный макрос дает курс доллора на опеределенную дату, но дату нужно вбивать руками... а мне нужно чтобы одним нажатием можно было подлучить курс доллара на большое количество дат.

Задача: в ячейку "СА" должен вставляться курс доллара на дату, которая стоит в ячейке "Е" и так пока не закончатся данные на странице (начинать с второй строки), т.е. одним запуском макроса должны заполниться все строки столбца "CA".

Т.о., меня бы вполне устроил выше выложенный макрос, если бы он не спрашивал меня какую мне надо дату, а сам бы смотрел ее в столбце Е в соотвествующей строке.

Зарание спасибо всем откликнувшимся!

Р.S. думаю из изложеного выше понятен мой "высокий" уровень знаний в VBA буду очень благодарен за готовый макрос или очень доходчивое объяснение

Последний раз редактировалось JTG; 28.07.2010 в 15:56.
Евгений К. вне форума Ответить с цитированием
Старый 28.07.2010, 16:09   #2
EugeneS
Форумчанин
 
Регистрация: 06.08.2009
Сообщений: 472
По умолчанию

пример файла
EugeneS вне форума Ответить с цитированием
Старый 28.07.2010, 16:23   #3
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Можно макрос использовать как пользовательскую функцию
Вложения
Тип файла: rar Бакс.rar (12.6 Кб, 21 просмотров)
Анализ,обработка данных Недорого

Последний раз редактировалось doober; 28.07.2010 в 16:40.
doober вне форума Ответить с цитированием
Старый 28.07.2010, 16:41   #4
аналитика
Форумчанин
 
Регистрация: 14.05.2009
Сообщений: 311
По умолчанию

то же самое, но процедура
кстати, как евро вырвать оттуда?
Вложения
Тип файла: rar Пример.rar (10.8 Кб, 23 просмотров)
аналитика вне форума Ответить с цитированием
Старый 28.07.2010, 17:12   #5
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Debug.Print htmlcode

<tr><td align="right">840</td>
<td align="left">&nbsp;&nbsp;USD</td>
<td align="right">1</td>
<td>&nbsp;&nbsp;Доллар США</td>
<td align="right">30,1851</td></tr>
<tr><td align="right">978</td>
<td align="left">&nbsp;&nbsp;EUR</td>
<td align="right">1</td>
<td>&nbsp;&nbsp;Евро</td>
<td align="right">43,4605</td></tr>

Посчитал:
outstr = Mid(htmlcode, InStr(1, htmlcode, "EUR") + 81, 7)
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 28.07.2010 в 17:22.
Hugo121 вне форума Ответить с цитированием
Старый 28.07.2010, 17:26   #6
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Код:
 outstr = Mid(htmlcode, InStr(1, htmlcode, "EUR") + 81, 7)
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 28.07.2010, 17:33   #7
аналитика
Форумчанин
 
Регистрация: 14.05.2009
Сообщений: 311
По умолчанию

Доллар США - 10 букв
Евро - 4 буквы
разница = 6
$
Код:
outstr = Mid(htmlcode, InStr(1, htmlcode, "USD") + 87, 7)
Код:
outstr = Mid(htmlcode, InStr(1, htmlcode, "EUR") + 81, 7)
аналитика вне форума Ответить с цитированием
Старый 28.07.2010, 19:15   #8
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Можете попробовать мою версию функции для получения курсов валют:
http://excelvba.ru/code/CurrencyRate

или вот ещё:

http://excelvba.ru/programmes/RatesWorksheet
одно нажатие кнопки, - и в вашем файле автообновляемые курсы доллара и евро на текущую дату
(используется веб-запрос к сайту центробанка)

Последний раз редактировалось EducatedFool; 06.03.2014 в 12:10.
EducatedFool вне форума Ответить с цитированием
Старый 28.07.2010, 22:03   #9
аналитика
Форумчанин
 
Регистрация: 14.05.2009
Сообщений: 311
По умолчанию

Цитата:
Сообщение от EducatedFool Посмотреть сообщение
Можете попробовать мою версию функции для получения курсов валют:
http://excelvba.ru/code/CurrencyRate
Код:
url_request = "http://www.cbr.ru/scripts/XML_daily.asp?date_req=" + Format(Now, "dd\/mm\/yyyy")
в этой строке, судя по всему, Now --> RateDate
аналитика вне форума Ответить с цитированием
Старый 28.07.2010, 22:31   #10
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
Сообщение от аналитика Посмотреть сообщение
Код:
url_request = "http://www.cbr.ru/scripts/XML_daily.asp?date_req=" + Format(Now, "dd\/mm\/yyyy")
в этой строке, судя по всему, Now --> RateDate
Спасибо за поправку - как всегда, писал код в спешке)
EducatedFool вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите сделать задание по Паскалю срочно ПЛЗ за 3 доллара urban007 Фриланс 3 08.12.2009 16:24
c пятницы и несколько месяцев, курс доллара будет около 36 рублей. читать пресс-релиз Центробанка РФ Alar Свободное общение 1 23.01.2009 09:42
1 курс информатики Jo Alves Паскаль, Turbo Pascal, PascalABC.NET 6 28.12.2008 12:39
2 задачи 1 курс Fraddy Помощь студентам 1 27.12.2007 17:44