Страницы: 1
RSS
Функция в VBA не работает под старым Excel
 
Добрый день. Есть функция которую писали в VBA (парсит курс валют), в новых версиях excel отрабатывает все хорошо, в старом 2003 excel выдает #знач. В чем может быть проблема?
Сама функция выложил ниже, а также для ее работы необходима библиотека Json, ее я прикрепил. Задавать валютную пару нужно в таком формате BTC_UAH
Код
Function BtcBid(pair)
    Dim xmlhttp As New MSXML2.XMLHTTP60, myurl As String
    Dim x As Object

    API = "https://btc-trade.com.ua/api/ticker/" + pair
    xmlhttp.Open "GET", API, False
    xmlhttp.Send
    Set x = ParseJson(xmlhttp.responseText)
    Set xmlhttp = Nothing
    
    BtcBid = val(x(pair)("buy"))
End Function
 
в вашем файле очень много строк кода... разбираться во всех очень долго.
Могу предложить попробовать так, вдруг заработает

Код
Function BtcBid(pair)
    Dim xmlhttp As Object, myurl As String, x As Object
    Dim API As String
    
    Set xmlhttp = CreateObject("MSXML2.XMLHTTP")
    API = "https://btc-trade.com.ua/api/ticker/" + pair
    xmlhttp.Open "GET", API, False
    xmlhttp.Send
    Set x = ParseJson(xmlhttp.responseText)
    Set xmlhttp = Nothing
     
    BtcBid = Val(x(pair)("buy"))
End Function
 
New, К сожалению не работает
 
Цитата
Sashat1705 написал:
В чем может быть проблема?
в References заглядывали? Точно есть библиотека MSXML2.XMLHTTP60? Раз Excel старый, может там и остальные библиотеки не совсем новые...
А вообще, я бы рекомендовал все это сделать через Sub и посмотреть, где ошибки будет выдавать.  
Изменено: Дмитрий(The_Prist) Щербаков - 18.10.2021 11:50:44
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Дмитрий(The_Prist) Щербаков,
в References библиотека MSXML2.XMLHTTP60 нет такой если она прям так и пишется. В новом excel также выделены все библиотеки как и в старом excel. Сделать через Sub, я не знаю как запустить функцию, на этом мои знания заканчиваются.
Изменено: Sashat1705 - 18.10.2021 12:44:36
 
Цитата
Sashat1705 написал:
Сделать через Sub, я не знаю как запустить,
значит надо учиться. Примерно так:
Код
Sub BtcBid()
    Dim pair
    pair= "то, что передавалось в функцию этим параметром"
    Dim xmlhttp As New MSXML2.XMLHTTP60, myurl As String
    Dim x As Object
 
    API = "https://btc-trade.com.ua/api/ticker/" + pair
    xmlhttp.Open "GET", API, False
    xmlhttp.Send
    Set x = ParseJson(xmlhttp.responseText)
    Set xmlhttp = Nothing
     
    MsgBox val(x(pair)("buy"))
End Sub
запускаете как обычную процедуру в пошаговом режиме: Отлов ошибок и отладка кода VBA
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Дмитрий(The_Prist) Щербаков,
Запустил - Dubug выкинул ошибку на xmlhttp.Send
 
В Excel 2003 есть библиотека Microsoft XML, v6.0
 
в References отмечена галочкой Microsoft XML, v6.0
Страницы: 1
Наверх