如何从Excel VBA中的这个简单JSON字符串中提取值?

时间:2015-06-01 08:00:28

标签: json vba excel-vba excel

我在VBA中有这个简单的json字符串:

{
    price_A: "0.172",
    price_B: "0.8",
    price_C: "1.3515"
}

我想提取price_A 0.172的值。

如何在Excel VBA中完成此操作?我正在使用Microsoft Office 2013。

我不需要广泛的JSON库。只是一个提取price_A的值的简单函数。

1 个答案:

答案 0 :(得分:3)

Regexp使您可以更好地控制解析,而不是依赖于字符长度。

举个例子:

Sub test_Function()
Dim StrIn As String

StrIn = "{" & _
    "price_A: " & Chr(34) & "0.182" & Chr(34) & "," & _
    "price_B: " & Chr(34) & "0.8" & Chr(34) & "," & _
    "price_C: " & Chr(34) & "1.3515" & Chr(34) & "}"

MsgBox Get_Value(StrIn)

End Sub

在价格A 之后在""中提取第一组数字。可以调整以检查价格B

Public Function Get_Value(StrIn As String) As String  
Dim objRegexp As Object
Dim objRegMC As Object
Set objRegexp = CreateObject("vbscript.regexp")
With objRegexp
    .Pattern = "price_A: ""([\d\.]+)"""
    If .test(StrIn) Then
        Set objRegMC = .Execute(StrIn)
        Get_Value = objRegMC(0).submatches(0)
    End If
End With
End Function

缩短版本以提取第一组数字

Public Function Get_Value(StrIn As String) As String
Dim objRegexp As Object
Set objRegexp = CreateObject("vbscript.regexp")
With objRegexp
    .Pattern = "[\d\.]+"
    If .test(StrIn) Then Get_Value = .Execute(StrIn)(0)
End With
End Function