Добрый день, можете помочь импортировать курсы валют с центрального банка в ексель. Нашел видео как это делать, но там курсы берутся с центрального банка России. а мне нужно из другого банка, а точнее http://www.nbkr.kg/index1.jsp?item=1562&lang=RUS. Необходимо, чтобы можно было брать с возможностью задавать период и вид валюты. Буду очень благодарен кто сможет помочь
Добрый день, можете помочь импортировать курсы валют с центрального банка в ексель. Нашел видео как это делать, но там курсы берутся с центрального банка России. а мне нужно из другого банка, а точнее http://www.nbkr.kg/index1.jsp?item=1562&lang=RUS. Необходимо, чтобы можно было брать с возможностью задавать период и вид валюты. Буду очень благодарен кто сможет помочьАналитик2012
Sub GO_() sURL = "http://www.nbkr.kg/index1.jsp?item=1562&lang=RUS&valuta_id=15&beg_day=04&beg_month=01&beg_year=2016&end_day=03&end_month=03&end_year=2016" Table = Get_Kurs(GetHTTPResponse(sURL)) End Sub
Public Function Get_Kurs(S) Dim X() ReDim X(1 To 1, 1 To 2) Set RegExp = CreateObject("VBScript.RegExp") RegExp.Global = True RegExp.IgnoreCase = True RegExp.Pattern = "<!\-{2}date\-{2}>([0-9\.]+)<!\-{2}date\-{2}></td>" & _ "<td class=""stat-right""><!\-{2}value\-{2}>([0-9\.]+)<!\-{2}value\-{2}>" bRes = RegExp.test(S) If bRes Then Set oMatches = RegExp.Execute(S) ReDim X(1 To oMatches.Count, 1 To 2)
For n = 0 To oMatches.Count - 1 X(n + 1, 1) = CDate(oMatches(n).subMatches(0)) X(n + 1, 2) = Val(oMatches(n).subMatches(1))
Next
End If Get_Kurs = X End Function
Function GetHTTPResponse(ByVal sURL) Dim RRz As String On Error Resume Next Set oXMLHTTP = CreateObject("MSXML2.XMLHTTP") With oXMLHTTP .Open "GET", sURL, False .send sHTMLBody = .responseText End With Set oXMLHTTP = Nothing GetHTTPResponse = sHTMLBody End Function
[/vba]
Задать период и вид валюты вы сможете сами.
[vba]
Код
Sub GO_() sURL = "http://www.nbkr.kg/index1.jsp?item=1562&lang=RUS&valuta_id=15&beg_day=04&beg_month=01&beg_year=2016&end_day=03&end_month=03&end_year=2016" Table = Get_Kurs(GetHTTPResponse(sURL)) End Sub
Public Function Get_Kurs(S) Dim X() ReDim X(1 To 1, 1 To 2) Set RegExp = CreateObject("VBScript.RegExp") RegExp.Global = True RegExp.IgnoreCase = True RegExp.Pattern = "<!\-{2}date\-{2}>([0-9\.]+)<!\-{2}date\-{2}></td>" & _ "<td class=""stat-right""><!\-{2}value\-{2}>([0-9\.]+)<!\-{2}value\-{2}>" bRes = RegExp.test(S) If bRes Then Set oMatches = RegExp.Execute(S) ReDim X(1 To oMatches.Count, 1 To 2)
For n = 0 To oMatches.Count - 1 X(n + 1, 1) = CDate(oMatches(n).subMatches(0)) X(n + 1, 2) = Val(oMatches(n).subMatches(1))
Next
End If Get_Kurs = X End Function
Function GetHTTPResponse(ByVal sURL) Dim RRz As String On Error Resume Next Set oXMLHTTP = CreateObject("MSXML2.XMLHTTP") With oXMLHTTP .Open "GET", sURL, False .send sHTMLBody = .responseText End With Set oXMLHTTP = Nothing GetHTTPResponse = sHTMLBody End Function
Sub GO_() sURL = "http://www.nbkr.kg/index1.jsp?item=1562&lang=RUS&valuta_id=15&beg_day=04&beg_month=01&beg_year=2016&end_day=03&end_month=03&end_year=2016" Table = Get_Kurs(GetHTTPResponse(sURL)) [a1].Resize(UBound(Table), 2) = Table End Sub
[/vba] и будет Вам счастье. Вывод в А1.
Добавьте строчку: [vba]
Код
Sub GO_() sURL = "http://www.nbkr.kg/index1.jsp?item=1562&lang=RUS&valuta_id=15&beg_day=04&beg_month=01&beg_year=2016&end_day=03&end_month=03&end_year=2016" Table = Get_Kurs(GetHTTPResponse(sURL)) [a1].Resize(UBound(Table), 2) = Table End Sub
KuklP, спасибо. но есть нюанс: выходит автоматически за определенный период и только по доллару. (по умолчанию). как сделать, чтобы можно было самому выбрать период и вид валюты и номер ячейки куда будут импортироваться данные? буду очень признателен
KuklP, спасибо. но есть нюанс: выходит автоматически за определенный период и только по доллару. (по умолчанию). как сделать, чтобы можно было самому выбрать период и вид валюты и номер ячейки куда будут импортироваться данные? буду очень признателенАналитик2012
Действительно? А я вот проанализировал первую строку макроса и сразу понял как "Задать период и вид валюты". И не называю себя громко аналитиком. Я простой сварщик. Хороший. Это подколка к тому, что не стоило бы может быть, приходя в незнакомый коллектив присваивать себе титулы. Как в анекдоте про портного: "Ето ви в себя в Коростилеве фигура, а в Одессе ви поц."(с) Шутка.
Действительно? А я вот проанализировал первую строку макроса и сразу понял как "Задать период и вид валюты". И не называю себя громко аналитиком. Я простой сварщик. Хороший. Это подколка к тому, что не стоило бы может быть, приходя в незнакомый коллектив присваивать себе титулы. Как в анекдоте про портного: "Ето ви в себя в Коростилеве фигура, а в Одессе ви поц."(с) Шутка. KuklP
Ну с НДС и мы чего-то стoим! kuklp60@gmail.com WM Z206653985942, R334086032478, U238399322728
KuklP, я писал про сбор информации. а анализ именно макроса это другое. если человек аналитик это не означает, что он может проанализировать всё. все зависит от профиля его деятельности, поэтому аналитики делятся на бизнес аналитики, биржевые аналитики и так далее. и сюда пишут люди, которые не смогли сами сделать, поэтому обращаются форумчанам. относительно названия логина: есть модераторы и это их работа говорить, что можно присваивать и что нельзя!!! я строго соблюдаю правила форума! и вам того же советую!
KuklP, я писал про сбор информации. а анализ именно макроса это другое. если человек аналитик это не означает, что он может проанализировать всё. все зависит от профиля его деятельности, поэтому аналитики делятся на бизнес аналитики, биржевые аналитики и так далее. и сюда пишут люди, которые не смогли сами сделать, поэтому обращаются форумчанам. относительно названия логина: есть модераторы и это их работа говорить, что можно присваивать и что нельзя!!! я строго соблюдаю правила форума! и вам того же советую!Аналитик2012