【问题标题】:Requests from XMLDom to retrieve XML from API are blocked来自 XMLDom 从 API 检索 XML 的请求被阻止
【发布时间】:2018-06-07 14:28:51
【问题描述】:

我在 VBA 中为 Excel 2010 编写了一个宏,用于从返回 XML 的 API 中检索数据。我自愿这样做是为了帮助我的妻子和她的同事免于做大量的体力劳动。所以,宏是在企业环境中使用的,我无法控制安全设置,并且从未在企业环境中工作过,我也不知道有什么可能性。

但是,IT 人员表示他们愿意提供帮助,但不知道如何解决。所以我想知道这里是否有人可以指出如何让它在所有 PC 上运行的正确方向。

代码如下,它适用于我妻子所有同事和我自己的家用电脑。它也适用于某些工作 PC,但不适用于某些 PC。 objDoc.Load 部分的代码失败,它显示了我的错误消息:

MsgBox ("There was an error when connecting to the API)

我想知道是否存在阻止访问宏中的外部 URL 的企业设置或个别 Excel 设置。我不会感到惊讶,因为这将是很好的安全性,但我想也应该有一种方法将 API 的 url 列入白名单?

有人知道如何解决这个问题吗?是在代码中、在 Excel 2010 设置中还是在我不知道的任何 Office 企业设置中?

Dim strUrl as String
Dim objDoc As Object
Set objDoc = CreateObject("MSXML2.DOMDocument")
objDoc.async = False

strUrl = {api URL}

    If objDoc.Load(strUrl) Then
        'it worked!
    Else
        MsgBox ("There was an error when connecting to the API)
        Exit Function
    End If

【问题讨论】:

  • 您是否尝试过在故障机器上使用 API 测试器并查看您返回的消息?

标签: xml excel excel-2010 vba


【解决方案1】:

缩小误差范围的方法

显然您使用后期绑定的代码已执行,但显示错误消息。通常 XML 代码包含不可读的字符实体(例如 & 符号 &)。 您可以通过将代码中的完整 Else 块替换为以下语句来缩小错误字段:

  Dim xPE        As Object    ' Set xPE = CreateObject("MSXML2.IXMLDOMParseError")
  Dim strErrText As String
  Set xPE = objDoc.parseError
  With xPE
     strErrText = "Load error " & .ErrorCode & " xml file " & vbCrLf & _
      Replace(.URL, "file:///", "") & vbCrLf & vbCrLf & _
      xPE.reason & _
      "Source Text: " & .srcText & vbCrLf & vbCrLf & _
      "Line No.:    " & .Line & vbCrLf & _
      "Line Pos.: " & .linepos & vbCrLf & _
      "File Pos.:  " & .filepos & vbCrLf & vbCrLf
  End With
  MsgBox strErrText, vbExclamation
  Set xPE = Nothing
  Exit Function

附加提示

如果您使用Set objDoc = CreateObject("MSXML2.DOMDocument") 将您的objDoc 对象设置为内存,通常您将获得旧版本(3.0),因此在大多数情况下,最好明确使用Set objDoc = CreateObject("MSXML2.DOMDocument.6.0"),而不是获得最新的6.0 版本。

【讨论】:

  • @JanWillem - 我通过扩展加载函数缩小错误字段的方法有帮助吗?
猜你喜欢
  • 2022-01-13
  • 2017-09-10
  • 2020-08-16
  • 2018-09-17
  • 2015-06-22
  • 2017-03-09
  • 2017-06-05
  • 2021-05-24
  • 2020-11-04
相关资源
最近更新 更多