我有一個問題,我的宏沒有正確刷新連接和/或數據透視表運行時,並保存工作簿。如何確保連接和數據透視表刷新完成之前的代碼進一步
一直在閱讀有關它,嘗試設置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
剛剛嘗試過,在連接刷新後添加了'DoEvents',並且在每次數據透視表刷新之後,都無濟於事。我還閱讀了你已經鏈接的其他文章,但既然他們也說過「DoEvents」不起作用,直到現在我都沒有嘗試過。 –
感謝您對帖子的提示,嘗試了更多,終於找到了我的背景查詢一開始不工作的原因。 「DoEvents」本身似乎不起作用,但與禁用後臺查詢相結合,它似乎有訣竅。 –