2017-06-26 8 views
0

VBaを使用してWeb APIを照会しようとしています。オブジェクトを設定するときに型が一致しない

リターン結果が

種類の不一致

この例外がスローされます私はgetJson機能(下図参照)

Function StartOfCode() 
'...code 
Dim jsonResult As Object 
Set jsonResults = getJson(query) 'cannot get past this 
'... more code 
End Function 


Function getJson(ByRef query As String) As Object 

Dim MyRequest As Object 
Set MyRequest = CreateObject("WinHttp.WinHttpRequest.5.1") 

    With MyRequest 
     .Open "GET", query 
     .setRequestHeader "Content-Type", "application/json" 
     .setRequestHeader "Accept", "application/json" 
     .send   
    End With 

Set getJson = DecodeJson(MyRequest.ResponseText) ' returns fine and I can see the object, of type Object/JScript/TypeInfo 

Set MyRequest = Nothing 

End Function 

Function DecodeJson(JsonString As Variant) As Object 
    Set DecodeJson = m_ScriptEngine.Eval("(" + JsonString + ")") 
End Function 

を終了したときに、私が午前問題はこれが発生しています私がここで間違ったことを理解しないでください

+0

DecodeJsonのコードを投稿できますか? –

+0

Oooops、updated、sorry @BrianMStafford – MyDaftQuestions

+0

私はあなたの関数の戻り値の型を明示しようとします。この場合、関数がObjectを返すようにします。 –

答えて

1

問題は、オブジェクトの宣言である:

Dim jsonResult As Object Set jsonResults = getJson(query)

あなたはjsonResultと呼ばれるオブジェクトを宣言しているが、次の行にあなたはvaribable名の複数形を使用している:jsonResults。したがって、これらの変数名の1つを一致させるように変更する必要があります。

+0

....なぜ 'option explicit'がこれを選んでいないのだろう... – MyDaftQuestions

+1

@MyDaftQuestionsあなたはグローバル変数' jsonResults'を持っていますか? – GSerg

関連する問題