выбор данных из внешнего источника
У меня есть подключение для передачи данных, которое получает данные с помощью запроса select
с SQL-сервера в лист Excel с использованием кода vba, например:
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
взломам.
PS Иногда запрос выполняется быстро (<1 сек),иногда это медленно (> 30 секунд) в зависимости от точных данных, которые я выбираю, что является динамическим.