Excel VBA授权在第一次运行时失败,第二次运行良好

时间:2018-08-17 16:16:19

标签: excel vba api authorization

我在访问API的Excel工作簿中有一个Sub。

在第一次运行时,将弹出登录模式,好像未发送Authorization标头一样。

如果我在没有登录的情况下关闭了该接口并再次运行了sub,则授权成功并且返回了我的数据。

这仅在我当天第一次打开工作簿时发生。下次我打开工作簿时,授权成功。据我所知,我的代码是正确的。有什么建议吗?

Dim hReq As Object
Set hReq = CreateObject("MSXML2.XMLHTTP")
hReq.Open "GET", APIURL, False
hReq.setRequestHeader "Authorization", "BASIC " & Base64Encoding(APIKEY & ":xxx")
hReq.Send

1 个答案:

答案 0 :(得分:1)

您是否考虑过添加一些错误处理?

意识到这并不能回答为什么它不能在第一次尝试中起作用。但是,它可以解决您不得不手动重新运行代码的问题。

例如,您可以在hReq对象上使用.status方法:

If hReq.Status <> "200" Then
    Status_Request = hReq.Status
    Application.Wait Now + 0:00:01

您可以在此处添加重试请求的方法。从理论上讲,您可以错误地处理错误,即:

On Error GoTo ErrorHandler

将ErrorHandler:标题放在代码中的更高位置。

或者您可以在Status_Request变量上执行Do Neverl循环。

Counter = 0
Do Until hReq.Status<> "200"
    Counter = Counter + 1
    {Your code here}
    If Counter = 4 Then
        MsgBox("Reached the retry limit, trys: " & Counter)
        Exit Sub
    End If

为防止代码陷入无限循环,请添加一个计数器并设置一个条件,以在计数器达到x重试次数后结束循环。