是否有可能通過VBA 連接到Web服務(例如發送一個HTTP請求)在的Microsoft Access? 例如,用戶單擊表單上的按鈕,然後將HTTP請求發送到以OK
響應的Web服務。連接到Web服務與VBA
有沒有人做過這個?
注意:VBA,不是VB.NET。
是否有可能通過VBA 連接到Web服務(例如發送一個HTTP請求)在的Microsoft Access? 例如,用戶單擊表單上的按鈕,然後將HTTP請求發送到以OK
響應的Web服務。連接到Web服務與VBA
有沒有人做過這個?
注意:VBA,不是VB.NET。
這是我和Access 2003中它是從interwebs,複製和再複製很久以前使用的相當成功的代碼。它創建一個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編輯器中,轉至工具>引用)。
是否可以通過XMLHTTP對象上傳/發佈圖片? – munjal 2016-12-24 07:20:30
我已經在幾個項目中使用的 「的Microsoft Office 2003 Web服務工具包2.01」 工具包(here)。它對我來說工作得非常好,儘管我也編寫了它正在與之交談的Web服務,所以當它實際工作時,我有能力擺脫過程的兩端的奢侈。 :)
其實,我剛剛升級從Access_2003到Access_2010這些應用程序和應用程序的SOAP客戶端部分的一個持續而無需修改工作。但是,在部署前測試期間,我確實遇到過一個皺摺:
我的應用程序無法在運行32位Office_2010的64位計算機上編譯,因爲它不喜歡早期綁定SoapClient30
對象。當我切換到使用該對象的後期綁定代碼將編譯,但它不起作用。所以,對於那個特定的應用程序,我必須添加一個限制,即64位機器需要運行64位Office。
此外,要知道,微軟的官方立場是,「所有SOAP工具包已取代Microsoft .NET框架。」 (參考文獻here)。
這是代碼,我使用。您需要先參考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年後;) – Chris 2016-02-25 07:18:49
正如http://msdn.microsoft.com/en-us/library/office/aa140260(v=office.10).aspx?順便說一句,MS Access使用VBA,而不是VB.Net – Fionnuala 2013-03-26 18:04:37
正是,謝謝!我一直在搜索VB.net,這是我沒有找到任何東西的原因...... – Chris 2013-03-26 18:21:27
另一種可能的解決方案是在vb.net中構建一個COM對象,該對象消耗並與Web服務通信,然後您設置對vb.net的引用。我認爲建議的XMLHttp例子可能是最好的,但如果你有一些熟悉vb.net的話,那麼你會發現它很容易生成類對象。 – 2015-02-08 02:48:43