从外部源选择数据
我有一个数据连接,它使用select
使用 vba 代码从 SQL 服务器查询到 Excel 工作表,如下所示:
With ActiveWorkbook.Connections("x"). _
OLEDBConnection
.BackgroundQuery = True
.CommandText = Array( _
"SELECT ... FROM ...
...
ActiveWorkbook.Connections("x").Refresh
链接到导入数据的数据透视表也需要刷新
但据我所知ActiveWorkbook.Connections("x").Refresh
异步运行,我想执行刷新完成后运行的代码,以便我可以运行以下代码:
Private Sub UpdatePivot()
Dim PV As PivotItem
For Each PV In ActiveSheet.PivotTables("PT1").PivotFields("PN").PivotItems
If PV.Name <> "(blank)" Then
PV.Visible = True
Else
PV.Visible = False
End If
Next
End Sub
但仅当数据被读入时
我如何知道刷新何时完成获取所有数据?
我需要做什么才能只运行UpdatePivot
刷新完成后,无需求助于sleep
hacks.
附:有时查询很快( 30 秒),具体取决于我选择的确切数据,这是动态的。
这不是一个出色的解决方案,但你可以ActiveWorkbook.Connections("x").Refresh
通过设置同步运行
.BackgroundQuery = False
另一个更复杂的解决方案是通过检查连接的状态来轮询.Refreshing http://msdn.microsoft.com/en-us/library/microsoft.office.interop.excel.oledbconnection.refreshing.aspx循环构造内的属性。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)