Widziałem How can I send an HTTP POST request to a server from Excel using VBA?Jak mogę odzyskać JSON z punktu końcowego HTTP, z programu Excel na MacOS i przeanalizować go?
i the MacOS-friendly response opisujący sposób pobierania danych z punktu końcowego HTTP przy użyciu QueryTable. Pokazuje, jak pobrać pojedynczy ciąg i umieścić go w komórce.
Wszystko dobrze. Teraz chciałbym pobrać więcej niż jedną wartość. Jest to duży łańcuch JSON i chcę go przetworzyć w programie Excel VBA przed wypełnieniem jednej lub więcej komórek.
Jak to jest możliwe?
mogę myśleć o jednej drodze - to wynik rzeczą QueryTable w ukrytej komórce, a następnie po zakończeniu procesu ukryta komórka do wypełnienia innych komórek. Istnieje kilka bibliotek JSON dla VBA, których jeszcze nie oceniłem.
Ale wydaje się to dość hacky. Naprawdę nie chcę polegać na przechowywaniu JSON jako wartości w komórce. Chciałbym przechowywać go tylko w zmiennej w moim kodzie VBA. Tak jakbym używał CreateObject ("MSXML2.ServerXMLHTTP"). (UWAGA: Funkcja CreateObject() nie jest dostępna w programie Excel na komputerze MacOS).
I rozumiem, że najlepszą odpowiedzią tutaj może być: Zdobądź komputer z systemem Windows, jeśli chcesz uruchamiać aplikacje wewnątrz Excel.
Tak, wiem, że mogę używać QueryTables. Ale mam googleed i nie widzę sposobu przechowywania wyników QueryTable do niczego * oprócz * komórki. To wydaje mi się dość hackowskie, dlatego poprosiłem o alternatywę. Jeśli znasz sposób zapisania wartości w zmiennej, doceniam to, jeśli możesz to opisać lub odesłać do linku do dokumentu. Również rzecz 'Microsoft.XMLHTTP' nie będzie działać z poziomu Excela na MacOS. – Cheeso
Uff, to będzie trudne. Myślę, że masz rację. QueryTable przechowuje tylko swoją zawartość w komórce (jest to w rzeczywistości cały punkt tej funkcji, ponieważ jest to tylko tabela z podłączonym źródłem danych). Osobiście znam tylko sposób powyżej lub z DLL, ale to także Windows. Mimo to program Excel jest przeznaczony do używania w oknach. Jeśli chcesz wszystkie funkcje, użyj boot camp. Innym sposobem byłoby użycie narzędzia takiego jak curl i wykonanie przez powłokę. – mffap
co za świetna metoda. Czy wiesz, czy wynik funkcji może być kiedykolwiek zbyt duży, aby powrócić? za duży ciąg? – mango