Since your JSON is quite basic, little helper function and main function should be enough to parse it. Note that you don't have valid JSON in your example, as it's lacking closing bracket }
. I added it in my example (and also edited your question to be correct).
This code you have to define in Module
in your VBAProject
(reference how to call VBA functions from sheet cells). Now, if your JSON is located in A1
cell and you want to extract value for Type1
, then you have to use such formula: =ExtractFromJson(A1, "Type1")
.
Option Explicit
Public Function ExtractFromJson(json As String, valueName As String)
'declare variables needed
Dim elementStartIndex As Long, elementEndIndex As Long, element As String
'loop through json, extracting elements
Do While InStr(elementStartIndex + 1, json, "{") > 0
'locate element by searching { and }
elementStartIndex = InStr(elementStartIndex + 1, json, "{")
elementEndIndex = InStr(elementStartIndex + 1, json, "}")
'extract element and pass it to function
element = Mid(json, elementStartIndex, elementEndIndex - elementStartIndex + 1)
ExtractFromJson = ParseElement(element, valueName)
If ExtractFromJson <> "" Then
Exit Function
End If
Loop
End Function
Function ParseElement(element As String, valueName As String) As String
Dim valueNameIndex As Long
'locate variable with specified name and take its value
valueNameIndex = InStr(1, element, """""ValueName"""":") + 14
If valueName = Trim(Replace(Mid(element, valueNameIndex, InStr(valueNameIndex, element, ",") - valueNameIndex), """", "")) Then
valueNameIndex = InStr(1, element, """""fig"""":") + 8
ParseElement = Trim(Replace(Mid(element, valueNameIndex, InStr(valueNameIndex, element, "}") - valueNameIndex), """", ""))
Exit Function
End If
End Function