2016-06-16 49 views
2

我需要更新在具有低於JSON文件MS-Access中的貨幣表:解析JSON與VBA(接入2010)

{ 
"timestamp": 1465843806, 
"base": "CAD", 
"rates": { 
"AED": 2.87198141, 
"AFN": 54.21812828, 
"ALL": 95.86530071, 
"AMD": 374.48549935, 
"ANG": 1.39861507 
} 
} 

VBA代碼如下:

Private Sub cmdJsonTest_Click() 
Set MyRequest = CreateObject("WinHttp.WinHttpRequest.5.1") 
MyRequest.Open "GET", "https://website.org/api/latest.json?base=CAD" 
MyRequest.send 
' MsgBox MyRequest.ResponseText 
Dim Json As Object 
Set Json = JsonConverter.ParseJson(MyRequest.ResponseText) 
MsgBox Json("base") 
End Sub 

的上面的代碼可以正確顯示帶有CAD的消息框,但我需要循環並捕獲每個貨幣代碼以及它的速率值。我用什麼語法來做到這一點?我可以提供函數Json()函數的代碼,但沒有看到上傳它的方法。任何援助將不勝感激。

回答

1

如果您正在使用此JSON解析器https://github.com/VBA-tools/VBA-JSON,使用此代碼

Private Sub IterateDictionary(poDict As Dictionary) 
    Dim key As Variant 

    For Each key In poDict.Keys() 
     If TypeName(poDict(key)) = "Dictionary" Then 
      Debug.Print key 
      IterateDictionary poDict(key) 
     Else 
      Debug.Print key, poDict(key) 
     End If 

    Next 
End Sub 

編輯: 你必須修改你想幹什麼就幹什麼過程debug.print。要從代碼中使用此代碼,請將此行放在MsgBox之後。

IterateDictionary Json 
+0

是的,這是我使用的json解析器。對不起,如果這是一個愚蠢的問題,但你可以請概述我將如何從我的函數調用你的函數? –

+0

@JohnC看到我編輯的答案。 – Jules

+0

當我運行代碼並且它正在工作時,我在即時窗口中看到結果。這正是我需要做的 - 謝謝! 現在我只需要找出更新貨幣表的最佳方法。我將不得不創建一個臨時記錄集,並通過每個匹配貨幣代碼循環,並更新或執行更新查詢。 再次感謝。如何將您的解決方案標記爲答案? –