Ligar ao serviço web em MS Access com VBA

é possível ligar-se a um serviço web (por exemplo, enviar um pedido HTTP) via VBA em Microsoft Access? Por exemplo, o usuário clica um botão em um formulário, então um pedido HTTP é enviado para um serviço web que responde com OK.

Alguém já fez isto antes?

Nota: VBA, não VB.NET.

Author: Gord Thompson, 2013-03-26

3 answers

Este é o código que usei com sucesso com o Access 2003. É dos interwebs, copiado e copiado há muito tempo. Ele cria um objeto XMLHttpRequest , envia um pedido de HTTP GET, e retorna os resultados como uma string.
Public Function http_Resp(ByVal sReq As String) As String

    Dim byteData() As Byte
    Dim XMLHTTP As Object

    Set XMLHTTP = CreateObject("MSXML2.XMLHTTP")

    XMLHTTP.Open "GET", sReq, False
    XMLHTTP.send
    byteData = XMLHTTP.responseBody

    Set XMLHTTP = Nothing

    http_Resp = StrConv(byteData, vbUnicode)

End Function

O SReq é o URL; a função devolve a resposta. Poderá ter de se certificar de que os objectos de dados ActiveX estão activos sob as suas referências (no editor de VBA, vá para Ferramentas > referências).

 14
Author: nucleon, 2013-03-27 01:09:29
Este é o código que eu usei. Você precisa primeiro referenciar Microsoft XML V6 para que este código funcione.
Public Sub GetPerson()
    'For API
    Dim reader As New XMLHTTP60

    reader.Open "GET", "www.exmple.com/users/5428a72c86abcdee98b7e359", False
    reader.setRequestHeader "Accept", "application/json"
    reader.send


    Do Until reader.ReadyState = 4
        DoEvents
    Loop

    If reader.Status = 200 Then
        Msgbox (reader.responseText)
    Else
        MsgBox "Unable to import data."
    End If
End Sub
 2
Author: Adarsh Madrecha, 2016-02-25 18:13:13

Usei o pacote de ferramentas" Microsoft Office 2003 Web Services Toolkit 2.01 " (disponível aqui) em alguns projectos. Funcionou muito bem para mim, embora eu também tenha escrito os serviços da web com os quais estava falando, então eu tive o luxo de ser capaz de mexer com ambas as extremidades do processo ao fazê-lo realmente funcionar. :)

Na verdade, acabei de atualizar um desses aplicativos do Access_2003 para Access_2010 e a parte do cliente SOAP do app continuou a funcionar sem modificações. No entanto, encontrei uma ruga durante os testes de pré-implantação:

O meu aplicativo não iria compilar numa máquina de 64 bits a rodar 32 bits Office_2010 porque não gostava da ligação inicial do objecto SoapClient30. Quando eu mudei para usar a ligação tardia para esse objeto o código iria compilar, mas não funcionou. Então, para esse app em particular eu tive que adicionar uma restrição que máquinas 64-bit precisavam estar executando Escritório 64-bit.

Além disso, esteja ciente de que a posição oficial da Microsoft é que " tudo SOAP Toolkits foram substituídos pelo Microsoft.NET Framework." (referência. Aqui.
 1
Author: Gord Thompson, 2013-03-26 19:08:36