我目前正在使用 VBA 自动提取大型数据集。然而,经常发生的情况是
- 潜艇只是卡住并且不再更新/连接中断(应用程序仍然响应)或
- 应用程序变得完全没有响应。
有没有办法实现超时功能,在 15 分钟后自动关闭应用程序?
在其他编程语言中,我会使用多线程来解决这个问题。但不确定类似的东西在 VBA 中是否可行,因为它完全是单线程的。
我用来自动化数据的基本算法如下所示:
Sub automateFetchData()
Dim requestTable As Workbook
Set requestTable = Workbooks.Open(requestTablePath)
Run ("'" & requestTable.Name & "'" & "!fetchData")
' This is where the application starts fetching data and occasionally gets stuck
debug.print "Data retrieval complete"
End Sub
对于那些熟悉 Thomson Reuters Datastream 的人,我使用请求表和请求表文件中的预编程宏来连接数据流服务器并从数据流服务器获取数据。因此,不幸的是,我不知道/详细了解运行时发生的情况:
Run ("'" & requestTable.Name & "'" & "!fetchData")
如果数据检索成功,进度条消失,输出粘贴到工作表,上面的代码到达
debug.print "Data retrieval complete"
陈述。
如果不成功,它会冻结,第二个屏幕截图中的进度条仍然打开并运行。此时,我希望超时启动并退出调用的函数
Run ("'" & requestTable.Name & "'" & "!fetchData")
请原谅我对问题的描述如此含糊。如果有人仍然可以帮助我,我会很高兴!总是乐于分享更多信息。干杯!