Мне очень нравится WinHTTP и веб-службы (особенно REST). Несмотря на то, что мне нужно немного исследовать каждую мелочь, которую я узнаю, и я только начинаю, это того стоит.
Вчера вечером я понял, как передать переменную из VBA в PHP и обратно. Другими словами, я научился передавать переменную VBA в функцию PHP (находящуюся в файле на сервере AutomateExcel), управлять переменной, а затем возвращать новый результат обратно в VBA.
Примечание. Переменная отправляется в виде строки.
Например, окно сообщения на этой картинке было получено:
1. Отправка переменной, содержащей число 15, через HTTP в файл PHP на AutomateExcel.
2. Функция PHP принимает переменную, умножает ее на 500, а затем возвращает ответ, в данном случае 7500.
3. VBA читает ответ и возвращает ответ в сообщении.
Вот как выглядит код PHP. Откройте блокнот, скопируйте и вставьте эту информацию, сохраните файл с расширением php и загрузите на свой сервер:
12345678910111213141516 |
Я не вернул ответ в формате XML, чтобы не усложнять пример. Вот код VBA для отправки и получения данных, измените строку подключения, чтобы она указывала на только что созданный файл php:
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 | 'Добавить ссылку на Microsoft WinHTTP ServicesКонстанта HTTPREQUEST_SETCREDENTIALS_FOR_SERVER = 0Private Sub GetItems ()Dim MyCon как новый WinHttpRequestDim sendthis As DoubleDim myanswer As String'переменная для отправкиsendthis = 15'Строка подключения для отправкиMyCon.Open "ПОЛУЧИТЬ", _"https://www.automateexcel.com/excel/pl/server500.php" & _"? PassThis =" & sendthis'Отправь этоMyCon.Send'верни этоmyanswer = MyCon.ResponseTextMsgBox myanswerКонец подписки |
Примечание. Добавьте ссылку на Microsoft WinHTTP Services.
Это потрясающе!