Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

JsonConverter.ParseJson() showing error "incorrect use of the New keyword" #237

Closed
Zeyna-sarr opened this issue Aug 9, 2022 · 6 comments

Comments

@Zeyna-sarr
Copy link

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

@houghtonap
Copy link

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.

  1. 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.
  2. Click the Developer tab, then click the Visual Basic button on the ribbon.
  3. 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.

@Zeyna-sarr
Copy link
Author

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.

@houghtonap
Copy link

A few questions:

  1. 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 of request.ResponseText was Nothing and thus caused an issue in the VBA-JSON code. Use a synchronous request or a call back handler with an asynchronous request.
  2. You said you did:
    Dim response As Object
    Set response = JsonConverter.ParseJson(request.ResponseText)
    But it looks like you are expecting a JSON Object back, which in VBA-JSON is mapped to a Scripting.Dictionary object. So you should really be doing Dim response As Scripting.Dictionary however, As Object will work, but you will loose intellisense in the VBA editor.

@Nick-vanGemeren
Copy link

This is a duplicate of open issue #68 with one solution in pull request #219.
If that solves your issue, please close it.

@Zeyna-sarr
Copy link
Author

Great 👍 the pull request #219 solves it for me. Thanks you

@Zeyna-sarr
Copy link
Author

Zeyna-sarr commented Oct 11, 2022 via email

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants