Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Получение данных с ЦБР - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
  • Страница 1 из 1
  • 1
Модератор форума: _Boroda_, Manyasha, SLAVICK, китин  
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Получение данных с ЦБР (Формулы/Formulas)
Получение данных с ЦБР
duckky Дата: Среда, 21.11.2018, 13:05 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 82
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Добрый день.
Давно была такая тема на форуме Получение котировок
в ней krosav4ig предложил решение решение 1 но там не показывались данные в выходные и праздники.

в сообщении №15 предложил окончательное решение.

Я не знаю посещает ли данный эксперт форум или нет, но вы можете помочь мне, пожалуйста, в чем причина, почему последнее решение не работает.
В примере 2 варианта, прошу помочь с последних, где данные можно выгружать с выходными и праздниками. Спасибо
К сообщению приложен файл: CBR.xlsm(30.6 Kb)
 
Ответить
СообщениеДобрый день.
Давно была такая тема на форуме Получение котировок
в ней krosav4ig предложил решение решение 1 но там не показывались данные в выходные и праздники.

в сообщении №15 предложил окончательное решение.

Я не знаю посещает ли данный эксперт форум или нет, но вы можете помочь мне, пожалуйста, в чем причина, почему последнее решение не работает.
В примере 2 варианта, прошу помочь с последних, где данные можно выгружать с выходными и праздниками. Спасибо

Автор - duckky
Дата добавления - 21.11.2018 в 13:05
krosav4ig Дата: Четверг, 22.11.2018, 02:23 | Сообщение № 2
Группа: Друзья
Ранг: Старожил
Сообщений: 1734
Репутация: 728 ±
Замечаний: 0% ±

Excel 2007,2010,2013
duckky, все дело в версии MSXML парсера, у вас нету 4.0, вот и выдает ошибку
[vba]
Код
Private ver%
Function МЕТЦБР2#(Optional Code% = 2, Optional dDate As Date)
    Dim d As Object, ddate1 As Date, elem As Object:
    Set d = CreateObject("msxml2.domdocument." & MSXMLVersion & ".0")
    dDate = IIf(dDate, dDate, Date): ddate1 = Application.EDate(dDate, -1): d.async = 0
    d.Load ("https://www.cbr.ru/scripts/xml_metall.asp?date_req1=" & ddate1 & "&date_req2=" & dDate)
    Select Case ver
        Case Is > 3 'Установлен MSXML >= 4.0, используем XPath функцию last()
            МЕТЦБР2 = CDbl(d.SelectSingleNode("*/Record[@Code='" & Code & "'][last()]/Buy").Text)
        Case Else   'иначе используем IXMLDOMNodeList
            Set elem = d.SelectNodes("*/Record[@Code='" & Code & "']/Buy")
            МЕТЦБР2 = CDbl(elem(elem.Length - 1).Text)
    End Select
    Set d = Nothing
End Function
Private Function MSXMLVersion%()
    Dim arrVersions()
    If ver > 0 Then MSXMLVersion = ver: Exit Function
    With GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv")
        .EnumValues 2 ^ 31, "CLSID\{2933BF90-7B36-11D2-B20E-00C04F983E60}\VersionList\", arrVersions
    End With
    'номер старшей версии MSXML, установленной в системе
    MSXMLVersion = Split(arrVersions(0), ".")(0)
    ver = MSXMLVersion
End Function
[/vba]


(_)Õvõ(_)

Сообщение отредактировал krosav4ig - Четверг, 22.11.2018, 17:25
 
Ответить
Сообщениеduckky, все дело в версии MSXML парсера, у вас нету 4.0, вот и выдает ошибку
[vba]
Код
Private ver%
Function МЕТЦБР2#(Optional Code% = 2, Optional dDate As Date)
    Dim d As Object, ddate1 As Date, elem As Object:
    Set d = CreateObject("msxml2.domdocument." & MSXMLVersion & ".0")
    dDate = IIf(dDate, dDate, Date): ddate1 = Application.EDate(dDate, -1): d.async = 0
    d.Load ("https://www.cbr.ru/scripts/xml_metall.asp?date_req1=" & ddate1 & "&date_req2=" & dDate)
    Select Case ver
        Case Is > 3 'Установлен MSXML >= 4.0, используем XPath функцию last()
            МЕТЦБР2 = CDbl(d.SelectSingleNode("*/Record[@Code='" & Code & "'][last()]/Buy").Text)
        Case Else   'иначе используем IXMLDOMNodeList
            Set elem = d.SelectNodes("*/Record[@Code='" & Code & "']/Buy")
            МЕТЦБР2 = CDbl(elem(elem.Length - 1).Text)
    End Select
    Set d = Nothing
End Function
Private Function MSXMLVersion%()
    Dim arrVersions()
    If ver > 0 Then MSXMLVersion = ver: Exit Function
    With GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv")
        .EnumValues 2 ^ 31, "CLSID\{2933BF90-7B36-11D2-B20E-00C04F983E60}\VersionList\", arrVersions
    End With
    'номер старшей версии MSXML, установленной в системе
    MSXMLVersion = Split(arrVersions(0), ".")(0)
    ver = MSXMLVersion
End Function
[/vba]

Автор - krosav4ig
Дата добавления - 22.11.2018 в 02:23
duckky Дата: Четверг, 22.11.2018, 13:40 | Сообщение № 3
Группа: Пользователи
Ранг: Участник
Сообщений: 82
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
MSXML парсера

Большое спасибо.
Еще тогда вопрос к вам, почему, без нажатия кнопки "вставить функцию" не могу выбрать дату
Например я пишу [vba]
Код
=МЕТЦБР(4,
[/vba] далее хочу выбрать дату, а формула закрывается, указать функцию и дату можно только при нажатии "Вставить функцию"


Сообщение отредактировал duckky - Четверг, 22.11.2018, 13:40
 
Ответить
Сообщение
MSXML парсера

Большое спасибо.
Еще тогда вопрос к вам, почему, без нажатия кнопки "вставить функцию" не могу выбрать дату
Например я пишу [vba]
Код
=МЕТЦБР(4,
[/vba] далее хочу выбрать дату, а формула закрывается, указать функцию и дату можно только при нажатии "Вставить функцию"

Автор - duckky
Дата добавления - 22.11.2018 в 13:40
Hugo Дата: Четверг, 22.11.2018, 13:55 | Сообщение № 4
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2862
Репутация: 640 ±
Замечаний: 0% ±

http://www.cbr.ru/ теперь not secure, пользуйте https://www.cbr.ru/


excel@nxt.ru
webmoney: E265281470651 R418926282008 Z422237915069
 
Ответить
Сообщениеhttp://www.cbr.ru/ теперь not secure, пользуйте https://www.cbr.ru/

Автор - Hugo
Дата добавления - 22.11.2018 в 13:55
krosav4ig Дата: Четверг, 22.11.2018, 17:43 | Сообщение № 5
Группа: Друзья
Ранг: Старожил
Сообщений: 1734
Репутация: 728 ±
Замечаний: 0% ±

Excel 2007,2010,2013
duckky, какой у вас установлен разделитель элементов списка?


(_)Õvõ(_)
 
Ответить
Сообщениеduckky, какой у вас установлен разделитель элементов списка?

Автор - krosav4ig
Дата добавления - 22.11.2018 в 17:43
duckky Дата: Суббота, 24.11.2018, 13:59 | Сообщение № 6
Группа: Пользователи
Ранг: Участник
Сообщений: 82
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
duckky, какой у вас установлен разделитель элементов списка?

Разделитель целой и дробной части - запятая
 
Ответить
Сообщение
duckky, какой у вас установлен разделитель элементов списка?

Разделитель целой и дробной части - запятая

Автор - duckky
Дата добавления - 24.11.2018 в 13:59
krosav4ig Дата: Суббота, 24.11.2018, 16:11 | Сообщение № 7
Группа: Друзья
Ранг: Старожил
Сообщений: 1734
Репутация: 728 ±
Замечаний: 0% ±

Excel 2007,2010,2013
почему, без нажатия кнопки "вставить функцию" не могу выбрать дату

потому, что вместо разделителя элементов списка вы пишете
Разделитель целой и дробной части


(_)Õvõ(_)
 
Ответить
Сообщение
почему, без нажатия кнопки "вставить функцию" не могу выбрать дату

потому, что вместо разделителя элементов списка вы пишете
Разделитель целой и дробной части

Автор - krosav4ig
Дата добавления - 24.11.2018 в 16:11
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Получение данных с ЦБР (Формулы/Formulas)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс цитирования
© 2010-2018 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!