Excel+VBAでJsonデータを取得する。
ExcelのVBAから、Jsonデータを取得(MongoDB使ってるとか)する場合
以下の様にするとサーバーから取得できる。
Private Function LoadJSONFromDB() As String Dim XMLhttp As Object Set XMLhttp = CreateObject("MSXML2.ServerXMLHTTP") XMLhttp.Open "GET", "http://localhost/get/json", False XMLhttp.setrequestheader "Content-Type", "application/json" XMLhttp.send LoadJSONFromDB = XMLhttp.responseText End Function
JsonのパースはScriptControlを使うやり方があります。
http://symfoware.blog68.fc2.com/blog-entry-579.html
が!!
このやり方は64bitの環境では使えないのです。
色々考えたけど…。
もうJsonとか普通にパースしようぜ!!
とは言え、1から組むのも面倒くさいので
以下で公開されてるコード使えば手っ取り早いと思います。
ついでに、上記のコードで取得したオブジェクトをDumpするコードを置いておきます。
Private Sub DumpJSONObj(ByRef json As Variant) If TypeName(json) = "Dictionary" Then Call DumpDictionaly(json) ElseIf TypeName(json) = "Collection" Then Call DumpCollection(json) Else Debug.Print "value:" & json End If End Sub Public Sub DumpCollection(ByRef dic As Variant) Dim keys Dim i For i = 0 To dic.Count - 1 Debug.Print "ArrayNo:" & i Call DumpJSONObj(dic.Item(i + 1)) Next i End Sub Public Sub DumpDictionaly(ByRef dic As Variant) Dim keys Dim i keys = dic.keys For i = 0 To dic.Count - 1 Dim key key = keys(i) Debug.Print "key:" & key Call DumpJSONObj(dic.Item(key)) Next i End Sub