我在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
的值的简单函数。
答案 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