10

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

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

注:VB.NETではなくVBA。

4

3 に答える 3

14

これは、Access 2003で非常にうまく使用したコードです。これは、何年も前にコピーおよび再コピーされたインターウェブからのものです。XMLHttpRequestオブジェクトを作成し、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エディターで[ツール]> [参照]に移動します)。

于 2013-03-27T01:09:29.203 に答える
2

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

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
于 2016-02-24T06:10:41.800 に答える
1

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

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

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

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

于 2013-03-26T19:08:36.823 に答える