2016-05-11 2 views
2

В Excel 2013 - что такое синтаксис VBA для обновления сводной таблицы? Я попробовал оба варианта ниже, и ни один из них не обновил мою сводную таблицу.Обновить сводную таблицу

'Does Not Work 
Sheets("Sheet1").Select 
ActiveSheet.PivotTables("PivotTable1").PivotCache.Refresh 
'Does Not Work 
For Each Sheet In ThisWorkbook.Worksheets 
    For Each Pivot In Sheet.PivotTables 
     Pivot.RefreshTable 
     Pivot.Update 
    Next 
Next 

EDIT
Чтобы добавить к нему --- Я на самом деле нуждаются в обновлении встроенного 1-й MySQL Query ТОГДА обновить сводную таблицу.

+0

Вы пытались с помощью записи макросов, чтобы увидеть, что он использует синтаксис? Похоже, 'activeworkbook.refreshall' должен заменить эти циклы. – gtwebb

+0

Какая версия Excel? При использовании записи макросов я получаю это:. ActiveSheet.PivotTables («PivotTable1») PivotCache.Refresh –

+0

Что является источником сводной таблицы точно? Обновлен ли источник? –

ответ

0

Моя проблема с этим была решена путем установки BackgroundQuery к False в соответствующей связи перед обновлением его:

With ThisWorkbook.Connections(1).OLEDBConnection 
    .BackgroundQuery = False 
    .Refresh 
End With 
Pivot.RefreshTable 

(заменить OLEDBConnection с соответствующим объектом подключения)

Оказывается, что с BackgroundQuery набором для True, соединение не завершит извлечение данных до выхода кода. Вы можете увидеть это, выполнив:

With ThisWorkbook.Connections(1).OLEDBConnection 
    .BackgroundQuery = True 
    .Refresh 
    Do While .Refreshing 
     DoEvents 
    Loop 
End With 

Этот цикл никогда не заканчивается, а в строке состояния в Excel показывает «RUNNING ФОН QUERY (Нажмите, чтобы отменить)»; нажатие вызывает диалог, показывающий «Все строки извлечены.», но с запросом, который все еще работает.

Смотрите также этот ответ - https://stackoverflow.com/a/25054870/3590073

Смежные вопросы