Naprawdę podoba mi się WinHTTP i usługi sieciowe (w szczególności REST). Mimo że muszę trochę poszukać dla każdej małej rzeczy, której się uczę, i dopiero zaczynam, warto.
Zeszłej nocy wymyśliłem, jak zawrócić zmienną z VBA do PHP iz powrotem. Innymi słowy, nauczyłem się, jak przekazać zmienną VBA do funkcji PHP (znajdującej się w pliku na serwerze AutomateExcel), manipulować zmienną, a następnie zwracać nowy wynik z powrotem do VBA.
Uwaga: Zmienna jest wysyłana jako ciąg.
Na przykład do okna wiadomości na tym zdjęciu dotarło:
1. Wysyłanie zmiennej przechowującej liczbę 15 przez HTTP do pliku PHP w AutomateExcel
2. Funkcja PHP pobiera zmienną, mnoży ją przez 500, a następnie zwraca odpowiedź, w tym przypadku 7500
3. VBA odczytuje odpowiedź i zwraca odpowiedź w msgbox
Oto jak wygląda kod PHP. Otwórz notatnik, skopiuj i wklej te informacje, zapisz plik z rozszerzeniem php i prześlij na swój serwer:
12345678910111213141516 |
Nie zwróciłem odpowiedzi w XML, aby przykład był prosty. Oto kod VBA do wysyłania i odbierania danych, zmień ciąg połączenia, aby wskazywał na właśnie utworzony plik php:
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 | ' Dodaj odwołanie do usług Microsoft WinHTTPStała HTTPREQUEST_SETCREDENTIALS_FOR_SERVER = 0Prywatna sub GetItems()Dim MyCon jako nowy WinHttpRequestPrzyciemnij to jako podwójnePrzyciemnij moją odpowiedź jako ciąg'zmienna do wysłaniawyślij to = 15'Ciąg połączenia do wysłaniaMyCon.Open "GET", _"https://www.automateexcel.com/excel/pl/server500.php" & _„?Przekaż to=” i wyślij to'Wyślij toMójCon.Wyślij'zwróc tomojaodpowiedź = MyCon.ResponseTextMsgBox moja odpowiedźNapis końcowy |
Uwaga: Dodaj odwołanie do usług Microsoft WinHTTP
To cudownie!