Comment puis-je émettre un HTTP GET à partir de VBA Excel pour Mac
J'ai besoin d'émettre un HTTP Get avec une chaîne de requête à un service web à partir d'Excel pour Mac 2011. J'ai vu les réponses à l'aide de tables de requête (Comment puis-je envoyer une requête HTTP POST à un serveur à partir d'Excel en utilisant VBA?) mais ils utilisent la méthode POST, pas une méthode GET. Je vois aussi qu'il est facile à partir d'une machine Windows, mais je suis bloqué sur un Mac.
Des suggestions, ou est-ce sans espoir?
OriginalL'auteur John Stephens | 2013-04-12
Vous devez vous connecter pour publier un commentaire.
Faire plus de recherche, je suis tombé sur Robert Chevalier de commentaire sur cette question VBA fonction Shell dans Office 2011 pour Mac et construit un HTTPGet fonction à l'aide de son execShell la fonction à appeler curl. Je l'ai testé sur un Mac exécutant Mac OS X 10.8.3 (Mountain Lion) avec Excel 2011 pour Mac. Voici le code VBA:
Pour l'utiliser, copiez le code ci-dessus, ouvrir l'éditeur VBA dans Excel 2011 pour Mac. Si vous n'avez pas un module, cliquez sur Insertion->Module. Collez le code dans le fichier module. Quitter l'éditeur VBA (trèfle-Q).
Voici un exemple d'utilisation de prévisions météorologiques service web (http://openweathermap.org/wiki/API/JSON_API)
La cellule A1 sera réservé pour le nom de la ville.
Dans la cellule A2, entrez l'URL de la chaîne:
http://api.openweathermap.org/data/2.1/forecast/city
Dans la cellule A3 qui permettra de construire la chaîne de requête, entrez:
="q=" & A1
Dans la cellule A4, entrez:
=HTTPGet(A2, A3)
Maintenant, tapez un nom de ville dans la cellule A1, par exemple
London
, la cellule A4 vous montrer la réponse JSON contenant les prévisions météo pour Londres. Modifier la valeur de A1 à partir deLondon
àMoscow
-- A4 modifier le format JSON prévisions pour la ville de Moscou.De toute évidence, à l'aide de VBA, vous pouvez analyser et de reformater les données JSON et le placer où il faut dans votre feuille de calcul.
Aucune réclamation pour des performances ou de l'évolutivité, mais pour un simple one-shot accès à un service web à partir d'Excel pour Mac 2011, ce qui semble faire l'affaire et répondait à la nécessité, pour laquelle j'ai posté ma question initiale. YMMV!
OriginalL'auteur John Stephens
La réponse ci-dessus à partir de John Stephens est fantastique (veuillez upvote!), mais il ne travaillait plus pour moi dans la plus récente d'Excel:mac 2016, avec une erreur que le code doit être mis à jour pour une utilisation sur les systèmes 64 bits.
De prendre quelques conseils de un problème que j'ai trouvé en relation avec le référentiel, j'ai été en mesure d'ajuster les types de données dans John script fonctionne correctement dans Excel:mac 2016:
OriginalL'auteur Scott Dudley
Une autre option (mise à jour en conséquence si votre curl n'est pas situé dans /opt/local/bin/curl):
VBA:
/path_to/getUrl.sh:
Noter que vous devrez vous assurer que getUrl.sh est exécutable:
OriginalL'auteur mwag