курс доллара и евро
anger47
Дата: Четверг, 03.05.2012, 13:24 |
Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 192
Репутация:
6
±
Замечаний:
0% ±
все описано в файле: номер 1.
все описано в файле: номер 1. anger47
К сообщению приложен файл:
i_i-.xlsm
(26.3 Kb)
Сообщение отредактировал anger47 - Четверг, 03.05.2012, 13:24
Ответить
Сообщение все описано в файле: номер 1. Автор - anger47 Дата добавления - 03.05.2012 в 13:24
anger47
Дата: Четверг, 03.05.2012, 13:24 |
Сообщение № 2
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 192
Репутация:
6
±
Замечаний:
0% ±
а вот файл номер 2
Сообщение отредактировал anger47 - Четверг, 03.05.2012, 13:26
Ответить
Сообщение а вот файл номер 2 Автор - anger47 Дата добавления - 03.05.2012 в 13:24
Alex_ST
Дата: Четверг, 03.05.2012, 13:34 |
Сообщение № 3
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3219
Репутация:
622
±
Замечаний:
0% ±
2003
А где этот самый "другой файл" , на который вы ссылаетесь в своей хотелке? И как, интересно, должен выглядеть календарь "как у меня" если в Вашем файле есть только 1 календарь, который Вас, похоже, не устраивает? И с какого сайта Вы хотите получать курсы валют? Похоже, что с НБУ. Ну так поищите в сети соответствующую UDF-ку. Наверняка должно быть полно.
А где этот самый "другой файл" , на который вы ссылаетесь в своей хотелке? И как, интересно, должен выглядеть календарь "как у меня" если в Вашем файле есть только 1 календарь, который Вас, похоже, не устраивает? И с какого сайта Вы хотите получать курсы валют? Похоже, что с НБУ. Ну так поищите в сети соответствующую UDF-ку. Наверняка должно быть полно. Alex_ST
С уважением, Алексей MS Excel 2003 - the best!!!
Ответить
Сообщение А где этот самый "другой файл" , на который вы ссылаетесь в своей хотелке? И как, интересно, должен выглядеть календарь "как у меня" если в Вашем файле есть только 1 календарь, который Вас, похоже, не устраивает? И с какого сайта Вы хотите получать курсы валют? Похоже, что с НБУ. Ну так поищите в сети соответствующую UDF-ку. Наверняка должно быть полно. Автор - Alex_ST Дата добавления - 03.05.2012 в 13:34
anger47
Дата: Четверг, 03.05.2012, 13:40 |
Сообщение № 4
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 192
Репутация:
6
±
Замечаний:
0% ±
Alex_ST, файл не влезал. пока сжал в рар архив. Цитата (Alex_ST писал(а)):
в Вашем файле есть только 1 календарь, который Вас, похоже, не устраивает?
меня мой устраивает, меня другой не устраивает=) Цитата (Alex_ST писал(а)):
Ну так поищите в сети соответствующую UDF-ку. Наверняка должно быть полно
искал, но не нашол. вы же не думаете, что я по первому своему желанию к Вам обращаюсь. Если я бы мог переписать сам то зделал бы. Я пробовал, но у меня шла ошибка макроса. На сайте НБУ не реагирует ексель.. тут берет с другого сайта. мне впринцепе пофыг с какого сайта лиш бы информация НБУ. Може я ещё что то не понятно написал пишите я сразу отвечю. я на форуме сижу
Alex_ST, файл не влезал. пока сжал в рар архив. Цитата (Alex_ST писал(а)):
в Вашем файле есть только 1 календарь, который Вас, похоже, не устраивает?
меня мой устраивает, меня другой не устраивает=) Цитата (Alex_ST писал(а)):
Ну так поищите в сети соответствующую UDF-ку. Наверняка должно быть полно
искал, но не нашол. вы же не думаете, что я по первому своему желанию к Вам обращаюсь. Если я бы мог переписать сам то зделал бы. Я пробовал, но у меня шла ошибка макроса. На сайте НБУ не реагирует ексель.. тут берет с другого сайта. мне впринцепе пофыг с какого сайта лиш бы информация НБУ. Може я ещё что то не понятно написал пишите я сразу отвечю. я на форуме сижу anger47
Ответить
Сообщение Alex_ST, файл не влезал. пока сжал в рар архив. Цитата (Alex_ST писал(а)):
в Вашем файле есть только 1 календарь, который Вас, похоже, не устраивает?
меня мой устраивает, меня другой не устраивает=) Цитата (Alex_ST писал(а)):
Ну так поищите в сети соответствующую UDF-ку. Наверняка должно быть полно
искал, но не нашол. вы же не думаете, что я по первому своему желанию к Вам обращаюсь. Если я бы мог переписать сам то зделал бы. Я пробовал, но у меня шла ошибка макроса. На сайте НБУ не реагирует ексель.. тут берет с другого сайта. мне впринцепе пофыг с какого сайта лиш бы информация НБУ. Може я ещё что то не понятно написал пишите я сразу отвечю. я на форуме сижу Автор - anger47 Дата добавления - 03.05.2012 в 13:40
Alex_ST
Дата: Четверг, 03.05.2012, 16:56 |
Сообщение № 5
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3219
Репутация:
622
±
Замечаний:
0% ±
2003
anger47, вот, я подпилил UDF-ку. Теперь ей можно задавать код валюты и дату (опционально)
Function Курс_НБУ(sCurr$, Optional ByVal Дата) ' курсы валют к гривне в НБУ
'sCurr - код валюты USD EUR RUB BYR … см. на http://www.bankstore.com.ua/currencyrates/dailyrates/
Dim sURL$, objHttp As Object , sHtmlCode$
Dim sDay$, sMonth$, sYear$
Dim CurrRate!, lPosCurrRate&
Dim sValue$, QTY%, lPosTdClass&
Dim sTdClass$, lTbPos&
'-------------------------------------------------------------------------------
Application.Volatile
If IsMissing (Дата) Then Дата = Date
If Дата = "" Then Курс_НБУ = CVErr (xlErrValue): Exit Function ' вернуть ошибку #ЗНАЧЕНИЕ
If Not IsDate (Дата) Then Дата = CDate (Дата)
Дата = CDate (Дата)
sDay = Format (Дата, "dd" ): sMonth = Format (Дата, "mm" ): sYear = Format (Дата, "yyyy" )
sURL = "http://www.bankstore.com.ua/currencyrates/dailyrates/123286/?currency_id=16&year=" & sYear & "&month=" & sMonth & "&day=" & sDay & "&rate_type=0"
On Error Resume Next
Set objHttp = CreateObject ("MSXML2.XMLHTTP.3.0" )
If Err.Number <> 0 Then
Err.Clear
Set objHttp = CreateObject ("MSXML2.XMLHTTP" )
If Err.Number <> 0 Then Set objHttp = CreateObject ("MSXML.XMLHTTPRequest" )
End If
If objHttp Is Nothing Then Курс_НБУ = CVErr (xlErrValue): Exit Function ' вернуть ошибку #ЗНАЧЕНИЕ
objHttp.Open "GET" , sURL, False
On Error Resume Next
objHttp.Send
If Err.Number <> 0 Then Курс_НБУ = CVErr (xlErrValue): Exit Function ' вернуть ошибку #ЗНАЧЕНИЕ
On Error GoTo 0
sHtmlCode = objHttp.responseText
Set objHttp = Nothing
On Error Resume Next
sCurr = UCase (sCurr) ' на всякий случай
sTdClass = "<td class=" "" " align=" "center" ">"
lPosTdClass = InStr (InStr (1 , sHtmlCode, sCurr), sHtmlCode, sTdClass) 'начало текста нужной ячейки
sValue = Trim (Mid (sHtmlCode, lPosTdClass + Len (sTdClass), InStr (lPosTdClass, sHtmlCode, "</td>" ) - lPosTdClass - Len (sTdClass)))
QTY = --(sValue) ' за количество единиц
sTdClass = "<td class=" "rate" ">"
lPosTdClass = InStr (InStr (1 , sHtmlCode, sCurr), sHtmlCode, sTdClass) 'начало текста нужной ячейки
sValue = Trim (Mid (sHtmlCode, lPosTdClass + Len (sTdClass), InStr (lPosTdClass, sHtmlCode, "</td>" ) - lPosTdClass - Len (sTdClass)))
CurrRate = CSng (Trim (Replace (sValue, "." , "," )))
Курс_НБУ = FormatNumber (WorksheetFunction.Round(CurrRate / QTY, 4 ), 4 )
End Function
anger47, вот, я подпилил UDF-ку. Теперь ей можно задавать код валюты и дату (опционально)
Function Курс_НБУ(sCurr$, Optional ByVal Дата) ' курсы валют к гривне в НБУ
'sCurr - код валюты USD EUR RUB BYR … см. на http://www.bankstore.com.ua/currencyrates/dailyrates/
Dim sURL$, objHttp As Object , sHtmlCode$
Dim sDay$, sMonth$, sYear$
Dim CurrRate!, lPosCurrRate&
Dim sValue$, QTY%, lPosTdClass&
Dim sTdClass$, lTbPos&
'-------------------------------------------------------------------------------
Application.Volatile
If IsMissing (Дата) Then Дата = Date
If Дата = "" Then Курс_НБУ = CVErr (xlErrValue): Exit Function ' вернуть ошибку #ЗНАЧЕНИЕ
If Not IsDate (Дата) Then Дата = CDate (Дата)
Дата = CDate (Дата)
sDay = Format (Дата, "dd" ): sMonth = Format (Дата, "mm" ): sYear = Format (Дата, "yyyy" )
sURL = "http://www.bankstore.com.ua/currencyrates/dailyrates/123286/?currency_id=16&year=" & sYear & "&month=" & sMonth & "&day=" & sDay & "&rate_type=0"
On Error Resume Next
Set objHttp = CreateObject ("MSXML2.XMLHTTP.3.0" )
If Err.Number <> 0 Then
Err.Clear
Set objHttp = CreateObject ("MSXML2.XMLHTTP" )
If Err.Number <> 0 Then Set objHttp = CreateObject ("MSXML.XMLHTTPRequest" )
End If
If objHttp Is Nothing Then Курс_НБУ = CVErr (xlErrValue): Exit Function ' вернуть ошибку #ЗНАЧЕНИЕ
objHttp.Open "GET" , sURL, False
On Error Resume Next
objHttp.Send
If Err.Number <> 0 Then Курс_НБУ = CVErr (xlErrValue): Exit Function ' вернуть ошибку #ЗНАЧЕНИЕ
On Error GoTo 0
sHtmlCode = objHttp.responseText
Set objHttp = Nothing
On Error Resume Next
sCurr = UCase (sCurr) ' на всякий случай
sTdClass = "<td class=" "" " align=" "center" ">"
lPosTdClass = InStr (InStr (1 , sHtmlCode, sCurr), sHtmlCode, sTdClass) 'начало текста нужной ячейки
sValue = Trim (Mid (sHtmlCode, lPosTdClass + Len (sTdClass), InStr (lPosTdClass, sHtmlCode, "</td>" ) - lPosTdClass - Len (sTdClass)))
QTY = --(sValue) ' за количество единиц
sTdClass = "<td class=" "rate" ">"
lPosTdClass = InStr (InStr (1 , sHtmlCode, sCurr), sHtmlCode, sTdClass) 'начало текста нужной ячейки
sValue = Trim (Mid (sHtmlCode, lPosTdClass + Len (sTdClass), InStr (lPosTdClass, sHtmlCode, "</td>" ) - lPosTdClass - Len (sTdClass)))
CurrRate = CSng (Trim (Replace (sValue, "." , "," )))
Курс_НБУ = FormatNumber (WorksheetFunction.Round(CurrRate / QTY, 4 ), 4 )
End Function
Alex_ST
С уважением, Алексей MS Excel 2003 - the best!!!
Сообщение отредактировал Alex_ST - Четверг, 03.05.2012, 16:59
Ответить
Сообщение anger47, вот, я подпилил UDF-ку. Теперь ей можно задавать код валюты и дату (опционально) [vba]
Function Курс_НБУ(sCurr $; Optional ByVal Дата ) ' курсы валют к гривне в НБУ 'sCurr - код валюты USD EUR RUB BYR … см. на http ://www.bankstore.com.ua /currencyrates /dailyrates / Dim sURL $; objHttp As Object ; sHtmlCode $ Dim sDay $; sMonth $; sYear $ Dim CurrRate False; lPosCurrRate & Dim sValue $; QTY %; lPosTdClass & Dim sTdClass $; lTbPos & '------------------------------------------------------------------------------- Application.Volatile If IsMissing(Дата ) Then Дата = Date If Дата = "" Then Курс_НБУ = CVErr(xlErrValue ): Exit Function ' вернуть ошибку ЗНАЧЕНИЕ If Not Дата IsDate(Then ) Дата Дата = CDate(Дата ) Дата = CDate(sDay ) Дата = Format(sMonth ; "dd"): Дата = Format(sYear ; "mm"): Дата = Format(sURL ; "yyyy") sYear = "http://www.bankstore.com.ua/currencyrates/dailyrates/123286/?currency_id=16&year=" & sMonth & "&month=" & sDay & "&day=" & On & "&rate_type=0" Error Resume Next Set objHttp If = CreateObject("MSXML2.XMLHTTP.3.0") Err.Number Then <> 0 Err.Clear Set objHttp If = CreateObject("MSXML2.XMLHTTP") Err.Number Then <> 0 Set objHttp End = CreateObject("MSXML.XMLHTTPRequest") If If objHttp Is Nothing Then Курс_НБУ xlErrValue = CVErr(Exit ): Function вернуть ' ошибку ЗНАЧЕНИЕ objHttp.Open sURL On "GET"; Error ; undefined Resume Next objHttp.Send If Err.Number Then Курс_НБУ <> 0 xlErrValue Exit = CVErr(Function ): вернуть ошибку ' ЗНАЧЕНИЕ On Error GoTo sHtmlCode objHttp.responseText Set 0 objHttp = Nothing On Error = Resume Next sCurr sCurr на всякий = UCase(случай ) ' sTdClass lPosTdClass sHtmlCode sCurr = "" sHtmlCode = InStr(InStr(1; sTdClass ; начало ); текста ; нужной ) 'ячейки sValue sHtmlCode lPosTdClass sTdClass = Тrim(Mid(lPosTdClass ; sHtmlCode + Len(lPosTdClass ); InStr(sTdClass ; QTY ; "") - sValue - Len(за ))) количество = --(единиц ) ' sTdClass lPosTdClass sHtmlCode sCurr = "" sHtmlCode = InStr(InStr(1; sTdClass ; начало ); текста ; нужной ) 'ячейки sValue sHtmlCode lPosTdClass sTdClass = Тrim(Mid(lPosTdClass ; sHtmlCode + Len(lPosTdClass ); InStr(sTdClass ; CurrRate ; "") - sValue - Len(Курс_НБУ ))) CurrRate = CSng(Тrim(Replace(QTY ; "."; ","))) End = FormatЧumber(WorksheetFunction.Round(Function / undefined; 4); 4) undefined undefined
[/vba] Автор - Alex_ST Дата добавления - 03.05.2012 в 16:56
anger47
Дата: Четверг, 03.05.2012, 16:58 |
Сообщение № 6
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 192
Репутация:
6
±
Замечаний:
0% ±
шас закину проверю
Ответить
Сообщение шас закину проверю Автор - anger47 Дата добавления - 03.05.2012 в 16:58
Alex_ST
Дата: Четверг, 03.05.2012, 17:01 |
Сообщение № 7
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3219
Репутация:
622
±
Замечаний:
0% ±
2003
anger47, я подправил код! Скопируйте ещё раз.
anger47, я подправил код! Скопируйте ещё раз. Alex_ST
С уважением, Алексей MS Excel 2003 - the best!!!
Ответить
Сообщение anger47, я подправил код! Скопируйте ещё раз. Автор - Alex_ST Дата добавления - 03.05.2012 в 17:01
anger47
Дата: Четверг, 03.05.2012, 17:10 |
Сообщение № 8
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 192
Репутация:
6
±
Замечаний:
0% ±
Почему ноль?
Ответить
Сообщение Почему ноль? Автор - anger47 Дата добавления - 03.05.2012 в 17:10
Alex_ST
Дата: Четверг, 03.05.2012, 17:25 |
Сообщение № 9
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3219
Репутация:
622
±
Замечаний:
0% ±
2003
потому что перед датой в формуле нужно было код валюты написать. Я добавил =Курс_НБУ("USD";D9) и всё прошло. На сегодня всё. Убегаю.
потому что перед датой в формуле нужно было код валюты написать. Я добавил =Курс_НБУ("USD";D9) и всё прошло. На сегодня всё. Убегаю. Alex_ST
С уважением, Алексей MS Excel 2003 - the best!!!
Ответить
Сообщение потому что перед датой в формуле нужно было код валюты написать. Я добавил =Курс_НБУ("USD";D9) и всё прошло. На сегодня всё. Убегаю. Автор - Alex_ST Дата добавления - 03.05.2012 в 17:25
anger47
Дата: Четверг, 03.05.2012, 17:37 |
Сообщение № 10
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 192
Репутация:
6
±
Замечаний:
0% ±
Спасибо все работает. чуток тормозит календарь, но я думаю что ето иза обновления курса валют. Спасибо!
Спасибо все работает. чуток тормозит календарь, но я думаю что ето иза обновления курса валют. Спасибо! anger47
Ответить
Сообщение Спасибо все работает. чуток тормозит календарь, но я думаю что ето иза обновления курса валют. Спасибо! Автор - anger47 Дата добавления - 03.05.2012 в 17:37
Alex_ST
Дата: Четверг, 03.05.2012, 20:28 |
Сообщение № 11
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3219
Репутация:
622
±
Замечаний:
0% ±
2003
anger47 , 1. Попробуйте заремарить Application.Volatile в начале функции чтобы она не пересчитывалась "на каждый чих" на листе (ведь курс так быстро не меняется 2. Не злоупотребляйте функциями, обращающимися к и-нету в ячейках листа. Достаточно будет их считать на листе по одному разу для каждой из интересующих валют, а в остальных местах, где нужны те же значения, поставить ссылку на ячейки с формулами, запрашивающими курс. 3. Календарь вообще-то тормозить не должен. Вполне возможно, что тормоза именно из-за многократных обращений в и-нет.
anger47 , 1. Попробуйте заремарить Application.Volatile в начале функции чтобы она не пересчитывалась "на каждый чих" на листе (ведь курс так быстро не меняется 2. Не злоупотребляйте функциями, обращающимися к и-нету в ячейках листа. Достаточно будет их считать на листе по одному разу для каждой из интересующих валют, а в остальных местах, где нужны те же значения, поставить ссылку на ячейки с формулами, запрашивающими курс. 3. Календарь вообще-то тормозить не должен. Вполне возможно, что тормоза именно из-за многократных обращений в и-нет.Alex_ST
С уважением, Алексей MS Excel 2003 - the best!!!
Ответить
Сообщение anger47 , 1. Попробуйте заремарить Application.Volatile в начале функции чтобы она не пересчитывалась "на каждый чих" на листе (ведь курс так быстро не меняется 2. Не злоупотребляйте функциями, обращающимися к и-нету в ячейках листа. Достаточно будет их считать на листе по одному разу для каждой из интересующих валют, а в остальных местах, где нужны те же значения, поставить ссылку на ячейки с формулами, запрашивающими курс. 3. Календарь вообще-то тормозить не должен. Вполне возможно, что тормоза именно из-за многократных обращений в и-нет.Автор - Alex_ST Дата добавления - 03.05.2012 в 20:28
anger47
Дата: Пятница, 04.05.2012, 11:07 |
Сообщение № 12
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 192
Репутация:
6
±
Замечаний:
0% ±
я написал
Application.Volatile False
и теперь не глючит сама програма... видно что обновляет курс только тогда когда идет изменение в ячейке с датою. спс за подсказку. Правильно?
я написал
Application.Volatile False
и теперь не глючит сама програма... видно что обновляет курс только тогда когда идет изменение в ячейке с датою. спс за подсказку. Правильно? anger47
Ответить
Сообщение я написал [vba]
Application.Volatile False
[/vba]и теперь не глючит сама програма... видно что обновляет курс только тогда когда идет изменение в ячейке с датою. спс за подсказку. Правильно? Автор - anger47 Дата добавления - 04.05.2012 в 11:07
Alex_ST
Дата: Пятница, 04.05.2012, 12:51 |
Сообщение № 13
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3219
Репутация:
622
±
Замечаний:
0% ±
2003
Правильно
С уважением, Алексей MS Excel 2003 - the best!!!
Ответить
Сообщение Правильно Автор - Alex_ST Дата добавления - 04.05.2012 в 12:51