访问VBA XML加载访问拒绝错误-修复



团队- Access VBA有问题-获得访问拒绝错误。我似乎在其他帖子的进一步帮助下解决了这个问题。这段代码允许提取XML并读取其属性。我已经减少了代码,因为我不能发布否则:

Sub test()
Dim Queue As String
   Dim aid As String
   Dim tp As String
...
 DoCmd.SetWarnings False
Dim xmlhttp As MSXML2.xmlhttp
Dim xmldoc As MSXML2.DOMDocument
Dim XMLNodes As MSXML2.IXMLDOMNodeList
Dim xmlElement As MSXML2.IXMLDOMElement
Dim bookTitle As String
' Fetch the XML
Set xmlhttp = CreateObject("Microsoft.xmlHTTP")
xmlhttp.Open "Get", "http://....xml", False
xmlhttp.send
' Create a new XMLDocument to which to load the XML text
Set xmldoc = New DOMDocument
xmldoc.loadXML (xmlhttp.responseText)
For Each n In xmldoc.selectNodes("*")
    ts = n.Attributes.getNamedItem("ts").Text
    Next
    For Each n In xmldoc.selectNodes("//myNode")

    Queue = n.Attributes.getNamedItem("cq").Text
    aid = n.Attributes.getNamedItem("id").Text
    tp = n.Attributes.getNamedItem("tp").Text
    astate = n.Attributes.getNamedItem("as").Text
    rc = n.Attributes.getNamedItem("rc").Text

      i = i + 1
    Next
   DoCmd.SetWarnings True
End Sub

几个建议:

  1. 尝试使用MSXML2.ServerXMLHTTP60代替MSXML2.xmlhttp。后者应该在仅访问本地XML文档时使用。
  2. xmlhttp.Open "Get", "http://....xml", False, [username], [password]还有两个参数:用户名和密码。不好的是它是纯文本。
  3. 查看Debug.Print xmlhttp.getAllResponseHeaders方法。报头将提供有价值的信息,说明你为什么会得到错误。
  4. 进一步的google搜索还可能导致Internet explorer的内部网安全设置,例如通过未加密的形式发送信息或允许跨域请求。以及将目标URL添加到内网区域。

最新更新