对象Vba读取项
我无法读取电影对象,我不知道为什么??,我正在尝试将JSOn API返回到excel中的工作表中,但我无法读取电影对象对象Vba读取项,vba,excel,Vba,Excel,我无法读取电影对象,我不知道为什么??,我正在尝试将JSOn API返回到excel中的工作表中,但我无法读取电影对象 Sub getData() Dim Movie As Object Dim R As Object Dim scriptControl As Object Set scriptControl = CreateObject("MSScriptControl.ScriptControl") scriptControl.Language = "JScript" With Cre
Sub getData()
Dim Movie As Object
Dim R As Object
Dim scriptControl As Object
Set scriptControl = CreateObject("MSScriptControl.ScriptControl")
scriptControl.Language = "JScript"
With CreateObject("MSXML2.XMLHTTP")
.Open "GET", "https://api.coinmarketcap.com/v1/ticker/shift/", False
.send
Set R = scriptControl.Eval("(" + .responsetext + ")")
.abort
With Sheets("API")
For Each Movie In R
MsgBox (Movie.Name)
.Cells(1, 2).Value = Movie.price_btc
.Cells(1, 3).Value = Movie.price_usd
.Cells(1, 4).Value = Movie.Rank
Next Movie
End With
End With
端接头
我创建了一个名为API的表来返回值,但我不知道如何在Movie对象中检索值元素
您可以签入debug而不是包含数据的电影,但当我尝试将其放入单元格时,会发送一个错误:
您的问题是,如果javascript对象的某些属性的名称与VBA关键字或其他保留术语匹配,则无法在VBA中直接访问它们。name就是一个例子-如果案例没有切换到Movie.name,您将看到无法编写Movie.name 这里有一种使用javascript访问属性的方法,但是您最好使用VBAjson之类的工具,因为它提供了更好的多用途方法
Sub getData()
Dim Movie As Object
Dim R As Object
Dim sc As Object, x
Set sc = CreateObject("MSScriptControl.ScriptControl")
sc.Language = "JScript"
With CreateObject("MSXML2.XMLHTTP")
.Open "GET", "https://api.coinmarketcap.com/v1/ticker/shift/", False
.send
sc.Eval ("var i, o = (" + .responsetext + ")")
sc.Eval "function l(){return o.length;}"
sc.Eval "function indx(n){i=n;}"
sc.Eval "function p(pname){return o[i][pname];}"
.abort
With Sheets(1)
For x = 1 To sc.Eval("l()")
sc.Eval "indx(" & x - 1 & ")" 'set array index
'get properties at that index
.Cells(1, 2).Value = sc.Eval("p('name')")
.Cells(1, 2).Value = sc.Eval("p('price_btc')")
.Cells(1, 3).Value = sc.Eval("p('price_usd')")
.Cells(1, 4).Value = sc.Eval("p('Rank')")
Next x
End With
End With
End Sub
可能重复的