我有一个问题,我的宏没有正确刷新连接和/或数据透视表运行时,并保存工作簿。如何确保连接和数据透视表刷新完成之前的代码进一步
一直在阅读有关它,尝试设置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”本身似乎不起作用,但与禁用后台查询相结合,它似乎有诀窍。 –