Вызов VBA – API отображается в Excel

Я пытаюсь показать цены на определенные криптовые валюты в листе Excel. Я извлекаю данные JSON из API CoinMarketCap – https://api.coinmarketcap.com/v1/ticker/

В конечном счете, я пытаюсь получить цену Ripple (строка 16), а затем установить ячейку B1 в своем листе Excel, чтобы отобразить цену пульсации (строка 17).

Это мой сценарий, но он почему-то не работает.

Sub test() Dim httpObject As Object Set httpObject = CreateObject("MSXML2.XMLHTTP") sURL = "https://api.coinmarketcap.com/v1/ticker/" sRequest = sURL httpObject.Open "GET", sRequest, False httpObject.Send sGetResult = httpObject.ResponseText Dim oJSON As Object Set oJSON = JsonConverter.ParseJson(sGetResult) If oJSON.Name = "Ripple" Then B1 = oJSON("Ripple")("price_usd") End If End Sub 

Вызов API успешно (я считаю), но я получаю синтаксические ошибки и т. Д. Надеюсь, что кто-то может помочь. заранее спасибо

EDIT: это Microsoft Excel 2010

EDIT 2: Это строки 16 и 17 (соответственно If oJSON.Name... и B1 = oJSON(... это создает проблему, но я не смог ее решить или найти ошибку на данный момент. Ошибка времени выполнения и т. Д.

РЕДАКТИРОВАТЬ 3: Я считаю, что допустил ошибку в строках 16 и 17, ссылаясь на oJSON, а не на элемент (sItem). Однако даже после его изменения (например, If sItem.Name = "Ripple" Then... ), он все равно не работает.

EDIT 4: Я считаю, что я также неправильно помешал excel-cell. Вместо того, чтобы просто писать B1 = ... , я теперь пишу Range.("B1").Value = ... , который работал в тесте.

Эта модификация, предложенная @omegastripes, работает здесь. Объект json – это набор словарей, поэтому вам нужно рассматривать его как таковой.

 Dim oJSON As Object Set oJSON = JsonConverter.ParseJson(sGetResult) Dim V As Object For Each V In oJSON If V("name") = "Ripple" Then Cells(1, 2) = V("price_usd") Exit For End If Next V 

Взгляните на приведенный ниже пример. Импортируйте модуль JSON.bas в проект VBA для обработки JSON.

 Option Explicit Sub Test48852376() Dim sJSONString As String Dim vJSON As Variant Dim sState As String Dim vElement As Variant Dim sValue As String Dim aData() Dim aHeader() ' Retrieve JSON string With CreateObject("MSXML2.XMLHTTP") .Open "GET", "https://api.coinmarketcap.com/v1/ticker/", False .Send sJSONString = .responseText End With ' Parse JSON JSON.Parse sJSONString, vJSON, sState If sState = "Error" Then MsgBox "Invalid JSON string": Exit Sub ' Extract ripple price_usd Do For Each vElement In vJSON Select Case False Case vElement.Exists("id") Case vElement("id") = "ripple" Case vElement.Exists("price_usd") Case Else MsgBox "ripple price_usd " & vElement("price_usd") Exit Do End Select Next MsgBox "ripple price_usd not found" Loop Until True ' Output the entire table to the worksheet JSON.ToArray vJSON, aData, aHeader With Sheets(1) .Cells.Delete .Cells.WrapText = False OutputArray .Cells(1, 1), aHeader Output2DArray .Cells(2, 1), aData .Columns.AutoFit End With MsgBox "Completed" End Sub Sub OutputArray(oDstRng As Range, aCells As Variant) With oDstRng .Parent.Select With .Resize(1, UBound(aCells) - LBound(aCells) + 1) .NumberFormat = "@" .Value = aCells End With End With End Sub Sub Output2DArray(oDstRng As Range, aCells As Variant) With oDstRng .Parent.Select With .Resize( _ UBound(aCells, 1) - LBound(aCells, 1) + 1, _ UBound(aCells, 2) - LBound(aCells, 2) + 1) .NumberFormat = "@" .Value = aCells End With End With End Sub 

Выход для меня следующим образом:

вывод

BTW, аналогичный подход применяется в следующих ответах: 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 и 12 .

  • Как получить старое значение измененной ячейки в Excel VBA?
  • Excel vba для создания любой возможной комбинации диапазона
  • Ошибка Excel 1004 «Невозможно получить ... свойство classа WorksheetFunction», появляющееся непоследовательно
  • VBA проверяет, существует ли файл
  • Excel: невероятное сокращение и расширение элементов управления
  • Условное форматирование с использованием кода Excel VBA
  • Excel VBA «Отменить выбор»
  • Функция Dir () не работает в Mac Excel 2011 VBA
  • Сохранение нескольких листов в .pdf
  • Использование Excel VBA для запуска SQL-запроса
  • Использование шаблона для открытия книги Excel
  • Давайте будем гением компьютера.