web-dev-qa-db-ja.com

VBAを使用してMSAccessのWebサービスに接続します

VBAを介してWebサービスに接続する(たとえば、HTTPリクエストを送信する)ことは可能ですかin Microsoft Access?たとえば、ユーザーがフォームのボタンをクリックすると、HTTPリクエストがOKで応答するWebサービスに送信されます。

誰かが以前にこれをしたことがありますか?

注:VB.NETではなくVBA。

9
Chris

これは、Access 2003で非常にうまく使用したコードです。これは、何年も前にコピーおよび再コピーされたインターウェブからのものです。 XMLHttpRequest Object を作成し、HTTP GETリクエストを送信し、結果を文字列として返します。

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

sReqはURLです。関数は応答を返します。参照の下でActiveXデータオブジェクトが有効になっていることを確認する必要がある場合があります(VBAエディターで[ツール]> [参照]に移動します)。

13
nucleon

これは私が使用したコードです。このコードを機能させるには、最初にMicrosoft XMLV6を参照する必要があります。

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
Adarsh Madrecha

いくつかのプロジェクトで「MicrosoftOffice2003 Webサービスツールキット2.01」ツールキット(利用可能 ここ )を使用しました。それは私にとってはかなりうまくいきましたが、それが話しているWebサービスも書いたので、実際に機能させるときにプロセスの両端をいじることができるという贅沢がありました。 :)

実際、これらのアプリの1つをAccess_2003からAccess_2010にアップグレードしたところ、アプリのSOAPクライアント部分は変更なしで引き続き機能しました。ただし、展開前のテスト中に1つのしわが発生しました。

私のアプリは、SoapClient30オブジェクトの早期バインドが気に入らなかったため、32ビットOffice_2010を実行している64ビットマシンではコンパイルできませんでした。そのオブジェクトに遅延バインディングを使用するように切り替えると、コードはコンパイルされますが、機能しませんでした。そのため、その特定のアプリでは、64ビットマシンで64ビットOfficeを実行する必要があるという制限を追加する必要がありました。

また、Microsoftの公式の見解は、「すべてのSOAPツールキットはMicrosoft.NET Frameworkに置き換えられました。」(参照 ここ )であることに注意してください。

1
Gord Thompson