![](/img/trans.png)
[英]In Excel VBA on Windows, for parsed JSON variables what is this JScriptTypeInfo anyway?
[英]Accessing a Variant/Object/JScriptTypeInfo property in VBA
我有以下代碼 VBA 代碼(用於 Excel 模塊)
Function getDesc(ByVal pCode As String) As String
Dim oRequest As Object
Set oRequest = CreateObject("WinHttp.WinHttpRequest.5.1")
oRequest.Open "GET", "https://my.url.com/?filter=CODE=" & pCode, False
oRequest.SetRequestHeader "Accept", "application/json"
oRequest.Send ""
Set props = jsonDecode(oRequest.ResponseText)
getDesc = props.row_data
End Function
Function jsonDecode(jsonString As Variant)
Set sc = CreateObject("ScriptControl"): sc.Language = "JScript"
Set jsonDecode = sc.Eval("(" + jsonString + ")")
End Function
我不知道如何將屬性LONG_DESCRIPTION
分配給getDesc =
我需要什么正確的語法? 或者,我將接受幾乎任何允許我返回LONG_DESCRIPTION
字符串的解決方案。
試試下面的代碼。 將JSON.bas模塊導入到 VBA 項目中進行 JSON 處理。
Option Explicit
Function getDesc(ByVal pCode As String) As String
Dim oRequest As Object
Dim sJSONString As String
Dim vJSON As Variant
Dim sState As String
Set oRequest = CreateObject("WinHttp.WinHttpRequest.5.1")
oRequest.Open "GET", "https://my.url.com/?filter=CODE=" & pCode, False
oRequest.SetRequestHeader "Accept", "application/json"
oRequest.Send
sJSONString = oRequest.ResponseText
JSON.Parse sJSONString, vJSON, sState
getDesc = vJSON("row_data")(0)("LONG_DESCRIPTION")
End Function
使用 JSON 字符串{'row_data':[{'LONG_DESCRIPTION':'desc_string'}]}
。
您不需要外部庫來實現這一點:
Option Explicit
Function getDesc(ByVal pCode As String) As String
Dim oRequest As Object
Set oRequest = CreateObject("WinHttp.WinHttpRequest.5.1")
oRequest.Open "GET", "https://my.url.com/?filter=CODE=" & pCode, False
oRequest.SetRequestHeader "Accept", "application/json"
oRequest.Send ""
Set props = jsonDecode(oRequest.ResponseText)
Set sc = CreateObject("ScriptControl"): sc.Language = "JScript"
sc.AddCode "function jsGetDesc(obj) { return obj[0]['LONG_DESCRIPTION']; }"
getDesc = sc.Run("jsGetDesc", props.row_data)
End Function
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.