Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 调用OLEDBConnection。在循环上刷新会阻止连接刷新完成_Vba_Excel_Excel 2016 - Fatal编程技术网

Vba 调用OLEDBConnection。在循环上刷新会阻止连接刷新完成

Vba 调用OLEDBConnection。在循环上刷新会阻止连接刷新完成,vba,excel,excel-2016,Vba,Excel,Excel 2016,我正在尝试确定连接刷新何时完成。我正在循环并检查连接是否每5秒刷新一次 只要它继续循环和检查,连接就永远不会脱离刷新状态。即使它会说“xxx Rows Loaded”,但如果脚本停止,它也会立即完成 Private Sub RefreshButton_Click() For Each objConnection In ThisWorkbook.Connections 'Refresh this connection objConnection.Refre

我正在尝试确定连接刷新何时完成。我正在循环并检查连接是否每5秒刷新一次

只要它继续循环和检查,连接就永远不会脱离刷新状态。即使它会说“xxx Rows Loaded”,但如果脚本停止,它也会立即完成

Private Sub RefreshButton_Click()

    For Each objConnection In ThisWorkbook.Connections
        'Refresh this connection
        objConnection.Refresh

        Dim endTime As Date
        Dim i As Integer
        i = 1

        Do While objConnection.OLEDBConnection.Refreshing

            endTime = DateAdd("s", 5, Now())

            Do While Now() < endTime
                DoEvents
            Loop

            i = i + 1
            Me.RefreshButton.Caption = "Refreshing..." & i
        Loop

    Next

    MsgBox "Finished refreshing all data connections"
Private子刷新按钮\u Click()
对于此工作簿中的每个对象连接。连接
'刷新此连接
对象连接。刷新
Dim endTime作为日期
作为整数的Dim i
i=1
在objConnection.OLEDBConnection.Refreshing时执行此操作
endTime=DateAdd(“s”,5,Now())
立即执行()
如何像这样循环检查连接是否仍在刷新,而不阻止其完成

编辑:循环运行一段时间后结束,连接在我关闭MsgBox后立即完成刷新,但之前从未完成过,即使我使用'DoEvents'永久循环


在VBA脚本完成执行之前,它似乎不会完成刷新?

您是否尝试检查“objConnection.State”以查看它是否正在刷新?@n我是否会检查与“刷新”匹配的字符串?关于这些东西的文档有点零碎,我很难找到它。@n但我在尝试使用objConnection.state时只得到了“Object不支持此属性或方法”。您是否尝试过
objConnection.OLEDBConnection.Refresh
objConnection.Refresh
?看起来(虽然我不确定)您正在调用不同对象上的刷新方法和刷新属性。可能需要进行一些测试,但每次查询后都会更新刷新日期。无法将其与上一个刷新日期进行比较。您是否尝试检查“objConnection.State”以查看它是否正在刷新?@n我是否会检查与“刷新”匹配的字符串?关于这些东西的文档有点零碎,我很难找到它。@n但我在尝试使用objConnection.state时只得到了“Object不支持此属性或方法”。您是否尝试过
objConnection.OLEDBConnection.Refresh
objConnection.Refresh
?看起来(虽然我不确定)您正在调用不同对象上的刷新方法和刷新属性。可能需要进行一些测试,但每次查询后都会更新刷新日期。可以将其与之前的刷新日期进行比较。