如果花费太长时间,如何自动取消对外部数据的刷新

时间:2019-06-05 08:47:15

标签: excel vba

我正在使用一个简单的Excel(2010)宏,该宏在打开工作表时会刷新来自SQL Server数据库的所有数据。有时,SQL Server必须更新一些数据,这可能需要45分钟的时间,在此期间,Excel的刷新必须等待,因为更新是通过事务完成的。

因此Excel不会做出反应,甚至有时会崩溃。

我的目标是,如果刷新数据的时间长于5秒,那么它将取消刷新并继续执行进一步的代码进行数据处理。

我以为我可以在刷新周围编写一个Little异步计时器,但我已经读过很多次Excel的vba是单线程的,因此您不能执行异步计时器。

接下来,我可能想在刷新之前检查SQL OLEDB连接的状态,但是由于我的Excel / VBA版本不知道ADODB类并抛出了一个错误,因此ADODB.Connection无法正常工作编译器错误。

简单的代码示例:

Private Sub Workbook_Open()

 ActiveWorkbook.Connections("db6connection").Refresh

'db6connection is the Name of my Data Connection via Excel with the Connection String:
' Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=True;Initial Catalog=p_lin;Data Source=db6

End Sub


0 个答案:

没有答案