如何确定一个excel ODBC后台查询是否完成刷新

我有一个perl应用程序,它打开Excel 2010电子表格并运行RefreshAll命令。 电子表格有许多ODBC查询,每个查询需要大约20分钟才能返回结果。 由于查询的数量和每个人的时间,他们必须在后台运行。 我需要能够确定所有的查询已经完成,所以我可以保存电子表格。 我已经尝试使用Workbook-> Connections-> ODBCConnection-> Refreshing属性来确定这一点。 但是,一旦我执行了Workbook-> RefreshAll命令,这将不起作用。 当我添加一些debugging代码来打印出连接名称时,它什么也不返回。 但是,如果我不执行RefreshAll命令,我会得到一个值的连接,我能够看到刷新命令的值(0,因为它还没有执行)。 我已经看到类似的post,指出查询需要在前台执行。 这不是一个选项,因为我不能等待16个小时以上的每个查询一次执行一个。 他们必须并行执行,然后在30分钟内完成。 这是我的代码:

$book->RefreshAll; # allow the connections to be established sleep 10; while (1 == 1) { foreach my $conn (in $book->{Connections}){ # Never gets in this loop unless the RefreshAll command is commented out &LOG("Found connection $conn->{Name}\n"); $oc = $conn->{ODBCConnection}; $refreshing += $oc->{Refreshing}; } &LOG("REFRESH loop has a value of $refreshing\n"); if ($refreshing == 0) { last; } sleep 30; } 

如果有人有一个如何在Perl或VBA或其他语言中做到这一点的例子,我可以让它在我的代码中工作。