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