2017-08-13 55 views
0

我在努力理解如何调用特定变量并将其组织在Excel工作表中。调用特定变量VBA Rest API

我需要从这个URL https://api.blinktrade.com/api/v1/BRL/ticker?crypto_currency=BTC得到买,卖和卷,但我无法找出如何分开它。

我使用此代码来调用数据

Public Sub btcteste() 

'Dim xmlhttp As Object 

Dim xmlhttp As New MSXML2.ServerXMLHTTP60 

Set xmlhttp = CreateObject("MSXML2.serverXMLHTTP") 

Dim myurl As String 

myurl = "https://api.blinktrade.com/api/v1/BRL/ticker?crypto_currency=BTC" 
xmlhttp.Open "GET", myurl, False 
xmlhttp.send 
MsgBox (xmlhttp.responseText) 

End Sub 

而且这是工作,但我怎么能分开的变量,并粘贴在单细胞?

感谢

+0

当你的问题是关于使用VBA XML文档越来越节点,许多例子都可以在互联网上找到。对于StackOverflow,这个问题太广泛了。 –

+0

@HenkvanBoeijen,数据是JSON,而不是XML,格式化为 – jsotola

+0

“但我不想知道如何区分它” - 这是我第一次看到一个问题,即海报承认他们不想做研究! ;)(希望这只是一个很差的措辞选择,并不意味着我读的是这样的:D) – YowE3K

回答

1
Public Sub btcteste() 

    Dim xmlhttp As Object 

    'Dim xmlhttp As New MSXML2.ServerXMLHTTP60 

    Set xmlhttp = CreateObject("MSXML2.serverXMLHTTP") 

    Dim myurl As String 

    myurl = "https://api.blinktrade.com/api/v1/BRL/ticker?crypto_currency=BTC" 
    xmlhttp.Open "GET", myurl, False 
    xmlhttp.send 

    Dim data As Variant 
    data = xmlhttp.responseText 

    Debug.Print data 

    ' example data 
    ' {"high": 13400.0, "vol": 616.03500983, "buy": 12830.59, "last": 12899.78, "low": 11800.0, "pair": "BTCBRL", "sell": 12899.78, "vol_brl": 7808332.67293126} 

    ' split at comma (,) , and then split at colon (:) 

    data = Split(data, ",") ' convert to array 

    ActiveWorkbook.Sheets("Sheet1").Range("b2:b4") = Application.Transpose(Array("buy", "sell", "vol")) 

    ' buy, sell and vol 
    ActiveWorkbook.Sheets("Sheet1").Range("c2") = Split(data(2), ":")(1) ' buy 
    ActiveWorkbook.Sheets("Sheet1").Range("c3") = Split(data(6), ":")(1) ' sell 
    ActiveWorkbook.Sheets("Sheet1").Range("c4") = Split(data(1), ":")(1) ' vol 

End Sub 
+0

非常感谢你,它完美的工作! 您是否建议图书馆了解您编写的所有命令? –

+0

哪部分你需要知道? – jsotola

1

试试这个代码。

Public Sub btcteste() 

    Dim xmlhttp As Object 

    'Dim xmlhttp As New MSXML2.ServerXMLHTTP60 

    Set xmlhttp = CreateObject("MSXML2.serverXMLHTTP") 

    Dim myurl As String 
    Dim strText As String 
    Dim vSplit As Variant, v As Variant 
    Dim vR() As Variant 
    Dim n As Integer 

    myurl = "https://api.blinktrade.com/api/v1/BRL/ticker?crypto_currency=BTC" 
    xmlhttp.Open "GET", myurl, False 
    xmlhttp.send 
    'MsgBox (xmlhttp.responseText) 
    strText = xmlhttp.responseText 
    strText = Replace(strText, "}", "") 
    strText = Replace(strText, "{", "") 
    strText = Replace(strText, Chr(34), "") 
    vSplit = Split(strText, ",") 
    For Each v In vSplit 
     n = n + 1 
     ReDim Preserve vR(1 To 2, 1 To n) 
     vR(1, n) = Trim(Split(v, ":")(0)) 
     vR(2, n) = Trim(Split(v, ":")(1)) 
    Next v 
    Range("a1").Resize(n, 2) = WorksheetFunction.Transpose(vR) '<~~ this is vertical 
    'Range("a1").Resize(2, n) = vR '<~~ this is horisontal 
End Sub 
+0

谢谢我的朋友! –