我有一个Excel模板(.xlt),其中包含报表数据的工作表和带有数据透视表的4x工作表。
当我们的报告系统创建报告并将模板应用于该报告时,数据透视表引用的某些字段不存在,因为运行宏以将其创建为报告系统过程的一部分。 / p>
但是,由于这些字段不存在,Excel会抛出错误(访问组件属性/方法时出错:REFRESH。引用无效。)。为了尝试防止这种情况,我在Refresh data when opening the file
的所有数据透视表上取消了该选项。
我知道我可以使用VBA刷新数据透视表,但有没有办法阻止数据库表在打开documnet时刷新数据,而是在创建新字段后通过VBA刷新它们?感谢。
Function UpdatePivots()
ActiveWorkbook.Sheets("DJG Marketing - Client List by ").PivotTables("PivotTable1").PivotCache.Refresh
ActiveWorkbook.Sheets("DJG Marketing - Client List by ").PivotTables("PivotTable2").PivotCache.Refresh
ActiveWorkbook.Sheets("DJG Marketing - Client List by ").PivotTables("PivotTable3").PivotCache.Refresh
ActiveWorkbook.Sheets("DJG Marketing - Client List by ").PivotTables("PivotTable4").PivotCache.Refresh
End Function
答案 0 :(得分:1)
这就是你需要的:
' Disable automatic calculation
Application.Calculation = xlCalculationManual
' do regular operation here
' Force a calculation
Application.Calculate
' Then remember to run automatic calculations back on
Application.Calculation = xlCalculationAutomatic
取自: http://www.zerrtech.com/content/stop-vba-automatic-calculation-using-applicationcalculation-manual