www.cbr.ru (офиц. курсы валют Центробанка) Как обновлять?

Программирование на Visual Basic for Applications
sonata
Постоялец
Постоялец
 
Сообщения: 321
Зарегистрирован: 31.07.2002 (Ср) 13:18
Откуда: Russia

www.cbr.ru (офиц. курсы валют Центробанка) Как обновлять?

Сообщение sonata » 15.04.2003 (Вт) 10:17

Интересный вопрос:
Есть сайт www.cbr.ru (офиц. курсы валют Центробанка)
Там есть такая возможность: прислать данные за опред. период на e-mail
в формате *.dbf
Так вот, можно ли сделать такой макрос, кот. будет подключаться к данному сайту
и добавлять данные в этот файл?
Если да, то можно пример?
Очень надо...

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 15.04.2003 (Вт) 10:23

В общем в Excel есть такая вещь как Web Query



Позволяет создать запрос, который будет вытаскивать данные с веб страницы.



Создаешь такой запрос, настраиваешь в нем частоту обновления даных и он автоматичски будет складывать тебе указанные данные в указанное место книги Excel. А потом можно будет отдельный лист (тот, на который ты складываешь данные сохранять в DBF формат.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 15.04.2003 (Вт) 10:24

Вот такую штучку написал IgorOK. Думаю, разберешься (это для Экселя)

Код: Выделить всё
Sub GetCBRFrates(L)
On Error GoTo errorhandler
Application.ScreenUpdating = False
    m = month(L)
    D = Day(L)
    Y = Year(L)
    If m < 10 Then MS = "0" & m Else MS = m
    If D < 10 Then D = "0" & D
   
    Worksheets("Rates").Activate
    With ActiveSheet.QueryTables.Add(Connection:= _
        "URL;http://www.cbr.ru/currency_base/D_print.asp?date_req=" & D & "/" & MS & "/" & Y & """", _
        Destination:=Range("A1"))
        .Name = "CBRrates"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlOverwriteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .WebSelectionType = xlSpecifiedTables
        .WebFormatting = xlWebFormattingNone
        .WebTables = "3"
        .WebPreFormattedTextToColumns = True
        .WebConsecutiveDelimitersAsOne = True
        .WebSingleBlockTextImport = False
        .WebDisableDateRecognition = False
        .Refresh BackgroundQuery:=False

    End With
        Worksheets("Rates").Range("I1") = CDate(L)
        Worksheets("Form").Activate
        Application.ScreenUpdating = True
    Exit Sub
errorhandler:
    MsgBox ("Error: probably internet connection can not be established. " & "Displayed rates for " & Worksheets("Rates").Range("I1"))
    Worksheets("Form").Activate
End Sub
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

sonata
Постоялец
Постоялец
 
Сообщения: 321
Зарегистрирован: 31.07.2002 (Ср) 13:18
Откуда: Russia

Сообщение sonata » 15.04.2003 (Вт) 13:20

Не совсем поняла. Как это применить практически.
Я сохранила таблицу с этого файла за период с 01,01,01 по 15,04,03
Таблица содержит такие столбцы:

DATA NOMINAL CURS


А что дальше?
Подскажите, пожалуйста....

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 15.04.2003 (Вт) 13:35

Это зависит от того, что тебе надо сделать.

Если сохранить в DBF, то Файл\Сохранить как и выбираешь формат DBase IV или DBase V и все.



Если что то еще, то скажи что именно неясно ;)

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 16.04.2003 (Ср) 16:38

Посмотри сюда, возможно это пригодится.
Lasciate ogni speranza, voi ch'entrate.

sonata
Постоялец
Постоялец
 
Сообщения: 321
Зарегистрирован: 31.07.2002 (Ср) 13:18
Откуда: Russia

Сообщение sonata » 17.04.2003 (Чт) 10:20

Спасибо за ответ,
списала функцию, установила, вызываю:
=GetInetCBRRates(840;"17.04.2003")

Но у меня пишет в ячейке: #ЗНАЧ!

Что это означает?

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 17.04.2003 (Чт) 10:25

Не знаю даже, может с типами данных накладки?
Попробуй "=GetInetCBRRates("840";СЕГОДНЯ())" или "=GetInetCBRRates("USD";СЕГОДНЯ())"

Но я бы не советовал использовать эту функцию на листе, она себя неприлично ведет, когда вызывается несколько раз подряд.

Лучше заведи в книге еще один лист с курсами валют и заполняй этот лист вручную (я имею ввиду, например, кликом на кнопке, которая вызовет макрос, заполняющий ячейки листа при помощи этой функции)
Lasciate ogni speranza, voi ch'entrate.

sonata
Постоялец
Постоялец
 
Сообщения: 321
Зарегистрирован: 31.07.2002 (Ср) 13:18
Откуда: Russia

Сообщение sonata » 17.04.2003 (Чт) 10:29

У нас стоит прокси, не может быть в этом дело?
Или сообщение было бы другое?

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 17.04.2003 (Чт) 10:33

Нет, если у вас нормально работает Internet Explorer, то и функция будет нормально работать.
Lasciate ogni speranza, voi ch'entrate.

skiperski
Идеолог
Идеолог
Аватара пользователя
 
Сообщения: 1386
Зарегистрирован: 25.06.2002 (Вт) 15:52

Сообщение skiperski » 17.04.2003 (Чт) 10:40

sonata писал(а):Но у меня пишет в ячейке: #ЗНАЧ!

Что это означает?

Сделай колонку пошире и увидишь значение

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 17.04.2003 (Чт) 10:51

Нет, skiperski. Не увидишь ты значение. Значение можно увидеть когда ячейка заполнена ######.



А ту проблема в том, что параметры ф-ции передаются некорректно.



Надо так: =GetInetCBRRates ("USD","17/04/2003")

А если на текущую дату то просто =GetInetCBRRates ("USD") так как из кода видно что при отсутствии послднего параметра ему будет присвоено Now()

sonata
Постоялец
Постоялец
 
Сообщения: 321
Зарегистрирован: 31.07.2002 (Ср) 13:18
Откуда: Russia

Сообщение sonata » 17.04.2003 (Чт) 10:54

Очень капризная ф-я, даже более капризная, чем женщина.
Не понять, от чего зависит ее настроение.
Одну секунду работает, потом нет...
Наверное, проще просто копировать курс на дату, чем пол-дня выяснять причину настроения..., хотя жаль, конечно...
Очень была бы полезная ф-я, если была бы более постоянной,
может быть это зависит от сервера?

sonata
Постоялец
Постоялец
 
Сообщения: 321
Зарегистрирован: 31.07.2002 (Ср) 13:18
Откуда: Russia

Сообщение sonata » 17.04.2003 (Чт) 10:58

[quote] Rayshade

Меняю в вызове ф-и, например дату- и уже не работает....


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 55

    TopList