防止Excel刷新数据透视表,直到VBA告知这样做

时间:2012-09-28 15:33:06

标签: excel excel-vba pivot-table excel-template vba

我有一个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

1 个答案:

答案 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