Microsoft AccessのVBAを介してWebサービスに接続する(たとえば、HTTP要求を送信する)ことは可能ですか?たとえば、ユーザーがフォームのボタンをクリックすると、HTTPリクエストが。で応答するWebサービスに送信されますOK
。
誰かがこれを以前にやったことがありますか?
注:VB.NETではなくVBA。
Microsoft AccessのVBAを介してWebサービスに接続する(たとえば、HTTP要求を送信する)ことは可能ですか?たとえば、ユーザーがフォームのボタンをクリックすると、HTTPリクエストが。で応答するWebサービスに送信されますOK
。
誰かがこれを以前にやったことがありますか?
注:VB.NETではなくVBA。
これは、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エディターで[ツール]> [参照]に移動します)。
これは私が使用したコードです。このコードを機能させるには、最初に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
いくつかのプロジェクトで「MicrosoftOffice2003Webサービスツールキット2.01」ツールキット(ここで入手可能)を使用しました。それは私にとってはかなりうまくいきましたが、それが話しているWebサービスも書いたので、実際に機能させるときにプロセスの両端をいじることができるという贅沢がありました。:)
実際、これらのアプリの1つをAccess_2003からAccess_2010にアップグレードしたところ、アプリのSOAPクライアント部分は変更なしで引き続き機能しました。ただし、展開前のテスト中に1つのしわに遭遇しました。
SoapClient30
私のアプリは、オブジェクトの早期バインドが気に入らなかったため、32ビットOffice_2010を実行している64ビットマシンではコンパイルできませんでした。そのオブジェクトに遅延バインディングを使用するように切り替えると、コードはコンパイルされますが、機能しませんでした。そのため、その特定のアプリでは、64ビットマシンで64ビットOfficeを実行する必要があるという制限を追加する必要がありました。
また、Microsoftの公式の見解は、「すべてのSOAPツールキットがMicrosoft.NETFrameworkに置き換えられた」というものであることに注意してください。(ここを参照)。