JSON à l'importation vers Excel
Est-il possible de script JSON appels dans une macro?
Je veux obtenir une chaîne JSON via une API de connexion. Il semble que le problème est Excel attend le passage des paramètres dans le code HTML de chaîne, mais JSON passe les paramètres dans le corps HTML. Des idées?
- Options pour la consommation de json dans VB/VBA: stackoverflow.com/questions/2782076/.... Comment faites-vous appel à l'API dans votre VBA? xmlHTTP?
- JSON est juste du texte brut de balisage pour les variables tableaux. Il n'y a rien de spécial à propos de JSON. Il sonne comme Excel est de transmettre les informations par le biais d'un _GET demande (.com?variable=réponse). Vous pourriez chercher à modifier le code HTML du serveur de code pour lire les variables d'une requête GET (en PHP, il suffit de $variable = $_GET['variable'];).
Vous devez vous connecter pour publier un commentaire.
Puisque c'est VBA, je ne l'utiliserais COM pour appeler
xmlhttprequest
, mais l'utiliser de manière synchrone de ne pas les déranger VBA est mono-thread d'exécution de l'environnement, Un exemple qui illustre unepost
etget
demande dans ce de la manière suivante:Alors maintenant, vous pouvez appeler la ci-dessus pour retourner la réponse du serveur:
Le problème ici est que nous voulons être en mesure de lire les données retournées par le serveur d'une certaine façon, plus que de la manipulation de la chaîne JSON directement. Ce qui est travaillé pour moi, c'est à l'aide de la VBA-JSON (google code d'exportation ici) type COM
Collection
à manipuler du JSON tableaux etDictionary
gérer les membres et leurs déclarations, avec un analyseur d'usine méthodeParse
que, fondamentalement, fait de la création de ces collections de dictionnaires beaucoup plus simple.Ainsi, nous pouvons maintenant analyser le JSON:
en quelque chose comme ce qui suit:
C'est gentil mais que penser des trucs comme étant en mesure d'éditer et de publier les données? Il y a bien aussi une méthode
toString
pour créer une chaîne JSON à partir de ci-dessus [Collection/Dictionnaire] les données JSON, en supposant que le serveur accepte de JSON dos.theData("Name")
n'est pas de travail pour moi - aucune idée pourquoi? :c j'ai ajouté JSONLib en tant que classe, utiliséDim parser As New JSONLib
(pas dans votre code à l'origine). Ensuite, j'ai utiliséDim theData
etSet theData = parser.parse(request.Response)
. Êtes-vous de variation des clients, comme une collection?client
etclients
. Aider quelqu'un d'autre dans le futur, - la copie de la bibliothèque de code dans un Module de Classe (clic droit - Insertion -> Module de Classe). Nom il JSONLib - copier le code de la jsonlib module à l'OP du code n'.Dim parser As New JSONLib
PuisSet theData = parser.parse(request.Response)
assurez-vous d'utiliserFor Each key in theData key("Name")
- j'essayais de tirer les valeurs detheData("Name")
et était super confus.J'ai écrit un .NET Excel Addin pour cela. C'est un générique Excel JSON client que les flux de tout objet JSON directement dans Excel via http.
Docs et les instructions d'installation peuvent être trouvés ici:
http://excel-requests.pathio.com/en/master/
Et voici le lien GitHub:
https://github.com/ZoomerAnalytics/excel-requests