首次运行时Excel VBA授权失败,第二次运行正常运行

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了首次运行时Excel VBA授权失败,第二次运行正常运行相关的知识,希望对你有一定的参考价值。

我在Excel工作簿中有一个访问API的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
答案

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

意识到这不会回答为什么它不能在第一次尝试时工作。但是,它可以解决您必须手动重新运行代码的问题。

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

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

从那里你可以添加一种方法来重试请求。从理论上讲,你可以使用错误处理错误,即:

On Error GoTo ErrorHandler

你可以在你的代码中将ErrorHandler:title放在更高的位置。

或者您可以在Status Request变量上执行Do Until循环。

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次重试后结束循环。

以上是关于首次运行时Excel VBA授权失败,第二次运行正常运行的主要内容,如果未能解决你的问题,请参考以下文章

使用 VBA 从 Excel 打开和关闭 Access 数据库 - Access 宏错误

Excel VBA SQL 错误,连接失败

奇怪的 excel-vba 运行时错误,不会删除现有工作表

Android 开发中Animation首次不运行,第二次开始正常?

Excel VBA 查询访问失败

如果从 Excel vba 执行 vbs,则从 vbs 运行 Access ImportExport 失败 - 知道吗?