Estou gostando muito do WinHTTP e dos serviços da Web (especificamente REST). Mesmo que eu precise pesquisar um pouco para cada pequena coisa que aprendo, e estou apenas começando, vale a pena.
Ontem à noite, descobri como fazer um roundtrip de uma variável de VBA para PHP e vice-versa. Em outras palavras, aprendi como passar uma variável VBA para uma função PHP (que reside em um arquivo no servidor AutomateExcel), manipular a variável e retornar o novo resultado de volta ao VBA.
Nota: a variável é enviada como string.
Por exemplo, a caixa de mensagem nesta imagem foi recebida por:
1. Enviando uma variável contendo o número 15 sobre HTTP para um arquivo PHP no AutomateExcel
2. Uma função PHP pega a variável, multiplica-a por 500 e retorna a resposta, neste caso 7500
3. O VBA lê a resposta e retorna a resposta em um msgbox
Esta é a aparência do código PHP. Abra o bloco de notas, copie e cole essas informações, salve o arquivo com a extensão php e faça upload para o seu servidor:
12345678910111213141516 |
Não retornei a resposta em XML para manter o exemplo simples. Este é o código VBA para enviar e receber os dados, altere a string de conexão para apontar para o arquivo php que você acabou de criar:
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 | 'Adicionar uma referência aos Serviços WinHTTP da MicrosoftConst HTTPREQUEST_SETCREDENTIALS_FOR_SERVER = 0Sub GetItems privado ()Dim MyCon As New WinHttpRequestDim sendthis As DoubleDim myanswer As String'variável para enviarsendthis = 15'String de conexão para enviarMyCon.Open "GET", _"https://www.automateexcel.com/excel/pl/server500.php" & _"? PassThis =" & enviar isto'Envie istoMyCon.Send'devolvermyanswer = MyCon.ResponseTextMsgBox myanswerEnd Sub |
Nota: Adicione uma referência aos Serviços WinHTTP da Microsoft
Fantástico!