>我有一个Excel模板(.xlt),其中包含一个用于报表数据的工作表,以及4个带有数据透视表的工作表。
当我们的报告系统创建报告并将模板应用于报告时,数据透视表引用的某些字段不存在,因为运行宏以在报告系统过程中创建它们。
但是,由于这些字段不存在,Excel 会引发错误(访问组件属性/方法时出错:刷新。引用无效。为了防止这种情况,我已经取消了所有数据透视表上的选项Refresh data when opening the file
。
但是有没有办法防止数据透视表在打开文档时刷新它们,而是在创建新字段后通过 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
您需要的:
' 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