ここに自分自身の質問に答える。 Microsoft Script Controlで実行されているJavaScriptを呼び出して、いくつかのJSONデータ構造体を返すことができます。スクリプトコントロールのEvaluateメソッドを使用してJSONを解析することは可能ですが、二次元(2D)バリアント配列に書き込んで、シートに直接貼り付けることも、ユーザー定義関数で返すこともできます。これは、データ構造のマーシャリングに対してバンプします。Windows Excel VBAで、2Dバリアント配列にJSONを書き込む
2次元バリアント配列をJavaScript関数に渡して書き込んだり書き戻したりすることはできません。 [あなたが真実でない証拠があれば投稿してください]。したがって、このコードは
'Tools->References->
'Microsoft Script Control 1.0; {0E59F1D2-1FBE-11D0-8FF2-00A0D10038BC}; C:\Windows\SysWOW64\msscript.ocx
Private Sub TestJSONtoOleVariantGridFails1()
Dim oScriptEngine As ScriptControl
Set oScriptEngine = New ScriptControl
oScriptEngine.Language = "JScript"
oScriptEngine.AddCode "function WriteResults1(vGrid) { vGrid(0,0)=1.2;vGrid(0,1)='red';vGrid(1,0)=true;vGrid(1,1)=null; return vGrid;};"
ReDim vGridBefore(0 To 1, 0 To 1)
Dim vGridAfter
vGridAfter = oScriptEngine.Run("WriteResults1", vGridBefore) '<---- FAILS with error "Cannot assign to a function result"
Debug.Assert vGridAfter(0, 0) = 1.2
Debug.Assert vGridAfter(0, 1) = "red"
Debug.Assert vGridAfter(1, 0) = True
Debug.Assert IsNull(vGridAfter(1, 1))
End Sub
だから、これは最高の2Dバリアント配列を移入する方法の質問は頼む失敗しますか?
私は投稿しているソリューションを持っていますが、他の誰かがJSONと2Dのバリアント配列のマーシャリングを理解しているかどうかを知ることに夢中になります。