JsonConverter.ParseJson() showing error "incorrect use of the New keyword"
Zeyna-sarr opened this issue · 6 comments
Hello everyone,
I'm testing web api call in VBA Word but I'm experiencing an issue trying to convert the result.
When I do :
"
Dim response As Object
Set response = JsonConverter.ParseJson(request.ResponseText)
"
and compile, it point out the JsonConverter file displaying the error "incorrect use of the New keyword".
Here is the concerned part in the JsonConverter file :
"
Private Function json_ParseObject(json_String As String, ByRef json_Index As Long) As Dictionary
Dim json_Key As String
Dim json_NextChar As String
Set json_ParseObject = New Dictionary (<------- The line error )
............
"
Any help will be appreciated
I suspect that you have not included a reference in your VBA project for Microsoft Scripting Runtime
which is where you will find the object Scripting.Dictionary
. The VBA-JSON source assumes that, that reference has been added to your VBA project.
- File->Options->Customize Ribbon, in the right pane (Customize the Ribbon) check the Developer tab to show it, if you have not already done so, then click the OK button.
- Click the Developer tab, then click the Visual Basic button on the ribbon.
- Click Tools->References, then scroll down the list until you see
Microsoft Scripting Runtime
and check it and click the OK button.
Hopefully that clears up the issue.
Hi @houghtonap,
Thank you for your response but I've already checked Microsoft Scripting Runtime in the project. So that's not the problem I guess.
A few questions:
- What is
request.ResponseText
, I'm suspecting it's from a call to WinHTTP or XMLHTTP, so see my response to issue #221 and whether that is applicable. If it is, then I suspect the asynchronous response returned later and the value ofrequest.ResponseText
wasNothing
and thus caused an issue in the VBA-JSON code. Use a synchronous request or a call back handler with an asynchronous request. - You said you did:
But it looks like you are expecting a JSON Object back, which in VBA-JSON is mapped to a
Dim response As Object Set response = JsonConverter.ParseJson(request.ResponseText)
Scripting.Dictionary
object. So you should really be doingDim response As Scripting.Dictionary
however,As Object
will work, but you will loose intellisense in the VBA editor.
Great 👍 the pull request #219 solves it for me. Thanks you