2013-03-26 22 views
9

Microsoft AccessでVBA を使用してWebサービスに接続できますか(HTTPリクエストを送信するなど) たとえば、ユーザーがフォーム上のボタンをクリックすると、HTTPリクエストがOKと応答するWebサービスに送信されます。VBAを使用したMS AccessのWebサービスに接続

誰もこれまでに行ったことはありますか?

注:VB.NETではなくVBAです。

+1

http://msdn.microsoft.com/en-us/library/office/aa140260(v=office.10).aspxと同様ですか? BTW、MS AccessはVB.NetではなくVBAを使用します – Fionnuala

+0

ありがとう、ありがとう!私はいつもVB.netを検索したので、何も見つからなかったのです... – Chris

+0

もう1つの解決策は、Webサービスを消費して通信するCOMオブジェクトをビルドしてから、 vb.netへの参照。私は、提案されたXMLHttpの例はおそらく最高だと思うが、あなたがvb.netに精通していれば、クラスオブジェクトを簡単に生成することができる。 –

答えて

12

これは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 Data Objectsが有効になっていることを確認する必要があります(VBAエディタで、[ツール]> [参照]に移動します)。

+0

XMLHTTPオブジェクト経由で画像をアップロード/投稿することは可能ですか? – munjal

1

いくつかのプロジェクトで「Microsoft Office 2003 Web Services Toolkit 2.01」ツールキット(hereが利用可能)を使用しました。私にとってはうまくいっていましたが、私もそれが話していたWebサービスを書いていました。実際に動作させるには、プロセスの両端で手を加えることができて贅沢でした。 :)

実際に、私はAccess_2003からAccess_2010にこれらのアプリケーションの1つをアップグレードしました。そして、アプリケーションのSOAPクライアント部分は修正なしで引き続き動作しました。しかし、私は展開前のテストで1つの皺に遭遇しました:SoapClient30オブジェクトの初期バインディングが気に入らなかったので、32ビットのOffice_2010を実行している64ビットマシンでアプリケーションがコンパイルされませんでした。私はそのオブジェクトのレイトバインディングを使用するように切り替えると、コードはコンパイルされますが、機能しませんでした。したがって、その特定のアプリケーションでは、64ビットマシンが64ビットOfficeを実行する必要があるという制限を加えなければなりませんでした。

また、Microsoftの公式の立場は、「すべてのSOAPツールキットがMicrosoft .NET Frameworkに置き換えられました」ということです。 (参照番号here)。

2

これは私が使用したコードです。このコードを動作させるには、まずMicrosoft XML V6を参照する必要があります。

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 
+3

ありがとう...ちょうど3年後;) – Chris

関連する問題