2015-04-22 5 views
0

Я пытаюсь обновить сводную таблицу из VBA после обновления исходной таблицы данных sql. Независимо от того, что я делаю, сводная таблица только обновится 2-й раз этот код выполнен. Я пробовал все комбинации и порядки pivot.RefreshTable и pivot.Update, добавляя Do Events, устанавливая Application.ScreenUpdating на false before и True после. У меня заканчиваются идеи. Каждый раз, когда данные изменяются в SQL, я должен выполнить его один раз, чтобы увидеть его в исходной таблице, и снова увидеть его в сводной таблице.Обновление сводной таблицы в Excel 2007 VBA не работает

Dim c As WorkbookConnection 
Set c = ThisWorkbook.Connections.Item("Sheet1") 

sSQL = "Select * from Table1 "  

c.OLEDBConnection.CommandText = sSQL 
c.OLEDBConnection.CommandType = xlCmdSql 
c.Refresh 

For Each pivot In ThisWorkbook.Worksheets("Sheet1").PivotTables 

    pivot.RefreshTable 
    pivot.Update 
    pivot.PivotCache.Refresh 
    DoEvents 
    pivot.RefreshTable 
    pivot.Update 
    pivot.PivotCache.Refresh 
Next 
+0

Вы пробовали идти до конца с изломами, чтобы увидеть, если она обновляется вообще на первой попытки? – Sam

ответ

1

Убедитесь, что соединение не обновляется в фоновом режиме:

Dim c As WorkbookConnection 
Set c = ThisWorkbook.Connections.Item("Sheet1") 

sSQL = "Select * from Table1 "  

c.OLEDBConnection.CommandText = sSQL 
c.OLEDBConnection.CommandType = xlCmdSql 
c.OLEDBConnection.Backgroundquery = False 
c.Refresh 

For Each pivot In ThisWorkbook.Worksheets("Sheet1").PivotTables 

    pivot.RefreshTable 

Next 
+0

Вот и все! Спасибо. – Lukasz

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