5 ответов:
Set objHTTP = CreateObject("MSXML2.ServerXMLHTTP") URL = "http://www.somedomain.com" objHTTP.Open "POST", URL, False objHTTP.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)" objHTTP.send("")кроме того, для большего контроля над HTTP-запрос, вы можете использовать
WinHttp.WinHttpRequest.5.1на местеMSXML2.ServerXMLHTTP.
Если вам это нужно для работы на Mac и Windows, вы можете использовать QueryTables:
With ActiveSheet.QueryTables.Add(Connection:="URL;http://carbon.brighterplanet.com/flights.txt", Destination:=Range("A2")) .PostText = "origin_airport=MSN&destination_airport=ORD" .RefreshStyle = xlOverwriteCells .SaveData = True .Refresh End WithПримечания:
- по поводу вывода... Я не знаю, можно ли вернуть результаты в ту же ячейку, которая вызвала функцию VBA. В приведенном выше примере, результат записывается в А2.
- по поводу ввода... Если вы хотите, чтобы результаты обновлялись при изменении определенных ячеек, убедитесь, что эти ячейки являются аргументом для вашей функции VBA.
- этот не будет работать на Excel для Mac 2008, который не имеет VBA. Excel для Mac 2011 получил VBA обратно.
для более подробной информации, вы можете посмотреть мое полное резюме о " использование веб-служб из Excel."
в дополнение к anwser Билл ящерица:
большинство бэкэндов анализирует необработанные данные post. Например, в PHP у вас будет массив $_POST, в котором будут храниться отдельные переменные в данных post. В этом случае вы должны использовать дополнительный заголовок "Content-type: application/x-www-form-urlencoded":
Set objHTTP = CreateObject("WinHttp.WinHttpRequest.5.1") URL = "http://www.somedomain.com" objHTTP.Open "POST", URL, False objHTTP.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)" objHTTP.setRequestHeader "Content-type", "application/x-www-form-urlencoded" objHTTP.send ("var1=value1&var2=value2&var3=value3")в противном случае вы должны прочитать необработанные данные post в переменной "$HTTP_RAW_POST_DATA".
вы можете использовать ServerXMLHTTP в проекте VBA, добавив ссылку на MSXML.
- откройте редактор VBA (обычно путем редактирования макроса)
- перейти к списку доступных ссылок
- Проверьте Microsoft XML
- Нажмите кнопку ОК.
(от ссылки на MSXML в проектах VBA)
The документация ServerXMLHTTP MSDN имеет полную информацию обо всех свойствах и методах ServerXMLHTTP.
короче говоря, он работает в основном так:
- вызов открыть способ подключения к удаленному серверу
- вызов отправить отправить запрос.
- читать ответ через responseXML,responseText,responseStream или responseBody
Я сделал это перед использованием библиотеки MSXML, а затем с помощью объекта XMLHttpRequest. См.http://scriptorium.serve-it.nl/view.php?sid=40
Comments