【问题标题】:Connect to web service in MS Access with VBA使用 VBA 连接到 MS Access 中的 Web 服务
【发布时间】:2013-03-16 16:08:23
【问题描述】:

是否可以通过 Microsoft Access in 中的 VBA 连接到 Web 服务(例如发送 HTTP 请求)? 例如,用户单击表单上的按钮,然后将 HTTP 请求发送到响应 OK 的 Web 服务。

以前有人做过吗?

注意:VBA,而不是 VB.NET。

【问题讨论】:

  • msdn.microsoft.com/en-us/library/office/…?顺便说一句,MS Access 使用 VBA,而不是 VB.Net
  • 没错,谢谢!我一直在搜索 VB.net,这就是为什么我没有找到任何东西的原因......
  • 另一种可能的解决方案是在 vb.net 中构建一个使用 Web 服务并与之通信的 COM 对象,然后设置对 vb.net 的引用。我认为建议的 XMLHttp 示例可能是最好的,但是如果您熟悉 vb.net,那么您会发现它很容易生成类对象。

标签: web-services ms-access ms-access-2007 vba


【解决方案1】:

这是我在 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 编辑器中,转到工具 > 引用)。

【讨论】:

  • 是否可以通过 XMLHTTP 对象上传/发布图片?
【解决方案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】:

我在几个项目中使用了“Microsoft Office 2003 Web Services Toolkit 2.01”工具包(here 提供)。它对我来说工作得很好,虽然我也写了它正在与之交谈的 Web 服务,所以当它真正工作时,我有幸能够摆弄过程的两端。 :)

事实上,我只是将其中一个应用程序从 Access_2003 升级到 Access_2010,应用程序的 SOAP 客户端部分无需修改即可继续工作。但是,我在部署前测试期间确实遇到了一个问题:

我的应用无法在运行 32 位 Office_2010 的 64 位机器上编译,因为它不喜欢 SoapClient30 对象的早期绑定。当我切换到对该对象使用后期绑定时,代码会编译,但它不起作用。因此,对于那个特定的应用程序,我必须添加一个限制,即 64 位计算机需要运行 64 位 Office。

另外,请注意,Microsoft 的官方立场是“所有 SOAP 工具包都已被 Microsoft .NET Framework 取代”。 (参考here)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-27
    • 1970-01-01
    • 2013-04-18
    • 2015-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多