Страницы: 1
RSS
Помогите дописать макрос
 
Добрые люди, помогите:  
 
Мне нужно чтобы этот макрос выдавал кроме курсов евро и доллара ставку MIBID и MIACR с http://cbr.ru/mkr_base/main.asp?cc=1&t1=&t2=--&t3=&p2=1&date_req1=28%2F07%2F2010&r1=1&date_req2=28%2F07%2F2010&C_month=07&C_year=2010&SOP=ON&SF=ON&d1=ON&x=30&y=12  
 
 
Public SelectedDate As String, DefaultDate As String  
Public dt_1 As Date, dt_2 As Date  
Option Explicit  
Sub GetRates()  
'дата создания 12/11/2008  
'Pavel55  
Dim sURL As String  
Dim objHttp As Object  
Dim sHtmlCode As String  
Dim varInpDate As Variant  
Dim WshShell As Object  
Dim RegValue As String  
Dim sDay As String, sMonth As String, sYear As String  
Dim sDollarRate As String, sEuroRate As String, sYuanRate As String, sPoundRate As String  
   'varInpDate = InputBox("Введите дату в формате ДД.ММ.ГГГГ", "Курсы валют", Date)  
   Form_SelectDate.show  
   varInpDate = CStr(SelectedDate)  
   If varInpDate = "" Then Exit Sub  
   varInpDate = CDate(varInpDate)  
   sDay = Format(varInpDate, "dd")  
   sMonth = Format(varInpDate, "mm")  
   sYear = Format(varInpDate, "yyyy")  
   sURL = "http://cbr.ru/currency_base/daily.aspx?C_month=" & _  
           sMonth & "&C_year=" & sYear & "&date_req=" & sDay & "%2F" & sMonth & "%2F" & sYear  
   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  
   End If  
   If objHttp Is Nothing Then  
       MsgBox "Невозможно создать объект для подключения к интернет!", 48, "Ошибка"  
       Exit Sub  
   End If  
   If objHttp Is Nothing Then Exit Sub  
   objHttp.Open "GET", sURL, False  
   On Error Resume Next  
   objHttp.Send  
   If Err.Number <> 0 Then  
       MsgBox "Отсутствует доступ в интернет!", 48, "Ошибка"  
       Exit Sub  
   End If  
   On Error GoTo 0  
   sHtmlCode = objHttp.responseText  
   Set objHttp = Nothing  
   On Error Resume Next  
   sDollarRate = Mid(sHtmlCode, InStr(InStr(1, sHtmlCode, "USD"), sHtmlCode, "[/td][/tr]") - 7, 7)
   sEuroRate = Mid(sHtmlCode, InStr(InStr(1, sHtmlCode, "EUR"), sHtmlCode, "[/td][/tr]") - 7, 7)
     
   sHtmlCode = ""  
   '-------------------------------------------------------------------------------  
   'считываем значение ключа реестра  
   'HKEY_CURRENT_USER\Control Panel\International\\sMonDecimalSep  
   'чтобы узнать какой знак является разделителем целой и дробной части  
   'указанной в Панель управления - Язык и региональные стандарты -  
   'Настройка - Денежная единица - Разделитель целой и дробной части  
   Set WshShell = CreateObject("WScript.Shell")  
   RegValue = WshShell.RegRead("HKEY_CURRENT_USER\Control Panel\International\\sMonDecimalSep")  
   If RegValue = "." Then  
       sDollarRate = CSng(Replace(sDollarRate, ",", "."))  
       sEuroRate = CSng(Replace(sEuroRate, ",", "."))  
         
   End If  
   '-------------------------------------------------------------------------------  
   Application.ScreenUpdating = False  
     
   [DollarRng] = ""
   [EuroRng] = ""
   
     
   [DateRng] = varInpDate
     
   [DollarRng] = Replace(sDollarRate, ",", ".")
   [EuroRng] = Replace(sEuroRate, ",", ".")
     
 
   ActiveSheet.Hyperlinks.Add Anchor:=Range("LinkRng"), Address:=sURL, _  
           ScreenTip:="Перейти на сайт ЦБ РФ", TextToDisplay:="Центральный банк Российской Федерации"  
   Application.ScreenUpdating = True  
 
End Sub  
 
Большое спасибо, добрые люди.
 
Интересная тема, вечером займусь, пожалуй.  
 
[Оффтоп]
> чтобы узнать какой знак является разделителем целой и дробной части  
 
Для этого я использую format(0,".")  
По-моему, гораздо проще, чем лазить в реестр. Нет ли подвоха в таком методе, коллеги?
 
Там на сайте ещё есть версия для печати. Из неё возможно будет легче эти данные вытянуть - меньше лишнего.
 
Для получения курсов валют можете использовать специальную функцию: <BR>http://excelvba.ru/code/CurrencyRate Можно попытаться что-то аналогичное сделать и для MIBID и MIACR...
 
Пробуйте. Чтобы привязать обновленный макрос к Вашей книге, Вам потребуется:  
1. Определить в книге имена MIBIDRng и MIACRRng  
2. Закомментировать одну строку в коде и раскомментировать две - для связи с формой.  
 
Я использовал тот же метод - анализ HTML кода, хотя обе страницы можно было бы импортировать веб-запросом. Брал версию для печати, спасибо Hugo.
 
СПАСИБО БОЛЬШОЕ!!!!!
 
С моей стороны, наверно, уже неприлично, но может поможете погрузить еще и ставку INSTAR с http://mfd.ru/Credits/Instar/?SelectedDate=01.07.2010
 
Погрузил.
Страницы: 1
Читают тему
Наверх