我正在使用一个简单的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