No Excel VBA no Windows, como fazer um loop através de uma matriz JSON analisada?

respondendo minha própria pergunta aqui.
Eu já trabalhei com JSON no Excel VBA e descobri muitas descobertas que serão feitas no formato de perguntas e respostashttps://stackoverflow.com/help/self-answer http://blog.stackoverflow.com/2011/07/its-ok-to-ask-and-answer-your-own-questions/

Portanto, em outras partes do stackoverflow, é possível ver perguntas sobre a análise do JSON no VBA, mas elas parecem faltar um truque ou dois.

Para começar, evito usar bibliotecas de análise JSON personalizadas e, em vez disso, uso o método Eval do ScriptControl como base de todo o meu código JSON. E também expressamos uma preferência pelas soluções nativas da Microsoft.

Aqui está uma pergunta anteriorNo Excel VBA no Windows, como atenuar o problema da passagem de sintaxe de ponto do JSON analisado, quebrado pelo comportamento de capitalização do IDE? sobre o qual esta questão se baseia. Ele mostra como o uso do VBA.CallByName é mais robusto do que a sintaxe do ponto para atravessar um objeto JSON analisado.

Nesta pergunta, é perguntado como atravessar uma matriz JSON analisada. Em primeiro lugar, aqui está uma abordagem miniscrita com uma dica de chapéu para ozmikehttps://stackoverflow.com/users/334106/ozmike

'Tools->References->
'Microsoft Script Control 1.0;  {0E59F1D2-1FBE-11D0-8FF2-00A0D10038BC}; C:\Windows\SysWOW64\msscript.ocx

Private Sub TestJSONParsingArrayWithMiniScript()
    'Hat tip to ozmike  https://stackoverflow.com/users/334106/ozmike
    'Based on https://stackoverflow.com/questions/5773683/excel-vba-parsed-json-object-loop#19359035
    Dim oScriptEngine As ScriptControl
    Set oScriptEngine = New ScriptControl
    oScriptEngine.Language = "JScript"
    oScriptEngine.AddCode "Object.prototype.myitem=function( i ) { return this[i] } ; "

    Dim sJsonString As String
    sJsonString = "[ 1234, 2345 ]"

    Dim objJSON As Object
    Set objJSON = oScriptEngine.Eval("(" + sJsonString + ")")

    Debug.Assert objJSON.myitem(0) = 1234
    Debug.Assert objJSON.myitem(1) = 2345


End Sub

Mas acredite ou não, VBA.CallByName pode ser usado nativamente, não apenas para obter o comprimento de uma matriz, mas também para acessar elementos. Ver resposta.

Esta é a pergunta 2 da série de 5. Aqui está a série completa

Q1No Excel VBA no Windows, como atenuar o problema da passagem de sintaxe de ponto do JSON analisado, quebrado pelo comportamento de capitalização do IDE?

Q2No Excel VBA no Windows, como fazer um loop através de uma matriz JSON analisada?

Q3No Excel VBA no Windows, como obter uma representação JSON com string em vez de "[objeto Objeto]" para variáveis JSON analisadas?

Q4No Windows Excel VBA, como fazer com que as chaves JSON antecipem "Erro em tempo de execução '438': o objeto não suporta esta propriedade ou método"?

Q5No Excel VBA no Windows, para variáveis JSON analisadas, o que é esse JScriptTypeInfo?

questionAnswers(1)

yourAnswerToTheQuestion