2017-08-04 59 views
0

我有一個問題,我的宏沒有正確刷新連接和/或數據透視表運行時,並保存工作簿。如何確保連接和數據透視表刷新完成之前的代碼進一步

一直在閱讀有關它,嘗試設置backgroundquery = false(即使我已將微軟腳本運行時添加到引用中,我也無法完成工作)以及不同類型的刷新,但問題仍然存在。 連接只是鏈接到不同工作簿中工作表的表。

這裏是我的刷新,這是一個工作簿保存尾隨其後的代碼(同時是一個更大的程序的一部分,因此,私人潛艇):

Private Sub RefreshPivotTables() 

Dim WkC As PivotTable, WkAC As PivotTable 

Set WkC = ThisWorkbook.Worksheets("Contracts").PivotTables("Contracts") 
Set WkAC = ThisWorkbook.Worksheets("All Contracts").PivotTables("All Contracts") 

ThisWorkbook.Connections("Contracting Expiry Report Master File").Refresh 
'Reading about it, I was using both Refresh Table and Cache Refresh together with Update thinking it might help 
With WkC 
    .RefreshTable 
    .PivotCache.Refresh 
    .Update 
End With 
With WkAC 
    .RefreshTable 
    .PivotCache.Refresh 
    .Update 
End With 

End Sub 

Private Sub SaveWorkbookNewMonth() 

Dim dt As String 

dt = Format(CStr(Now), "mmmm yyyy") 
ThisWorkbook.SaveAs Filename:="C:\Users\" & Environ$("username") & "\Desktop\Expiry Report Aviation, Asphalt, BS and International Marine - " & dt & ".xlsm", _ 
    FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False 

End Sub 

如何確保刷新任何想法將不勝感激,完成沒有代碼前進。

編輯:

到底後臺查詢的是解決辦法,並沒有意識到這是不是因爲受保護的工作簿工作。

新的工作代碼:

Private Sub RefreshConnectionAndPivotTables() 

Dim WkC As PivotTable, WkAC As PivotTable 

Set WkC = ThisWorkbook.Worksheets("Contracts").PivotTables("Contracts") 
Set WkAC = ThisWorkbook.Worksheets("All Contracts").PivotTables("All Contracts") 

ThisWorkbook.Protect Password:="pass", Structure:=False, Windows:=False 
ThisWorkbook.Connections("Contracting Expiry Report Master File").OLEDBConnection.BackgroundQuery = False 
ThisWorkbook.Connections("Contracting Expiry Report Master File").Refresh 
ThisWorkbook.Connections("Contracting Expiry Report Master File").OLEDBConnection.BackgroundQuery = True 
ThisWorkbook.Protect Password:="pass", Structure:=True, Windows:=True 
DoEvents 
WkC.RefreshTable 
WkAC.RefreshTable 

End Sub 

回答

0

調用查詢刷新後,您可以使用DoEventsdocumentation here)。在進入下一行VBA代碼之前,這將一直等到刷新完成。

看看這個question

+0

剛剛嘗試過,在連接刷新後添加了'DoEvents',並且在每次數據透視表刷新之後,都無濟於事。我還閱讀了你已經鏈接的其他文章,但既然他們也說過「DoEvents」不起作用,直到現在我都沒有嘗試過。 –

+0

感謝您對帖子的提示,嘗試了更多,終於找到了我的背景查詢一開始不工作的原因。 「DoEvents」本身似乎不起作用,但與禁用後臺查詢相結合,它似乎有訣竅。 –

0

我建議你添加數據科拉姆的計數在數據透視的價值觀和配合樞軸計數總數的記錄。 如果匹配則罰款或再次刷新樞紐。

+0

對不起,不完全確定你的意思。還沒有真正與VBA中的數據透視表一起工作,所以我不確定如何實現你的建議。 –

相關問題