Pergunta

código

O VBA é necessário para executar um HTTP POST de uma planilha do Excel?

Foi útil?

Solução

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("")

Como alternativa, para um maior controle sobre a solicitação HTTP que você pode usar WinHttp.WinHttpRequest.5.1 no lugar de MSXML2.ServerXMLHTTP .

Outras dicas

Se você precisar dele para trabalhar em Mac e Windows, você pode usar 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

Notas:

  • Em relação à saída ... Eu não sei se é possível para retornar os resultados à mesma célula que chamou a função VBA. No exemplo acima, o resultado é escrito em A2.
  • Em relação à entrada ... Se você quiser que os resultados para atualizar quando você alterar certas células, certifique-se essas células são o argumento para a sua função VBA.
  • Este não irá funcionar no Excel para Mac 2008, que não tem VBA. Excel 2011 para Mac tem VBA de volta.

Para mais detalhes, você pode ver meu resumo completo sobre " usando web serviços de Excel ".

Além do anwser de Bill o Lagarto :

A maioria dos backends analisar os dados pós-primas. Em PHP por exemplo, você terá um $ _POST array em que variáveis ??individuais dentro dos dados de postagem será armazenado. Neste caso, você tem que usar um cabeçalho "Content-Type: application / x-www-form-urlencoded": adicional

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")

Caso contrário, você tem que ler os dados post matérias sobre a variável "$ HTTP_RAW_POST_DATA".

Você pode usar ServerXMLHTTP em um projeto VBA, adicionando uma referência para MSXML.

  1. Abra o Editor de VBA (normalmente editando um Macro)
  2. Vá para a lista de referências disponíveis
  3. Verifique Microsoft XML
  4. Clique em OK.

(de referenciamento MSXML dentro projetos do VBA )

O ServerXMLHTTP MSDN documentação tem detalhes completos sobre todas as propriedades e métodos de ServerXMLHTTP.

Em suma, porém, ele funciona basicamente assim:

  1. método aberta para conectar para o servidor remoto
  2. send para enviar a solicitação.
  3. Leia a resposta via responseXML , responseText , responseStream ou responseBody

Eu fiz isso antes de usar a biblioteca MSXML e, em seguida, usando o objeto XMLHttpRequest. Consulte http://scriptorium.serve-it.nl/view.php?sid = 40

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top