在VBA告知Excel刷新透视表之前,禁止Excel刷新透视表

在VBA告知Excel刷新透视表之前,禁止Excel刷新透视表,excel,pivot-table,excel-template,vba,Excel,Pivot Table,Excel Template,Vba,我有一个Excel模板(.xlt),其中包含一个用于报告数据的工作表,以及4个带有透视表的工作表 当我们的报告系统创建报告并将模板应用于该报告时,透视表引用的某些字段不存在,因为在报告系统的过程中会运行宏来创建这些字段 但是,由于这些字段不存在,Excel出现错误(访问组件属性/方法时出错:REFRESH.Reference无效)。为了防止出现这种情况,我在打开文件时取消了所有透视表上刷新数据的选项 我知道我可以使用VBA刷新透视表,但是有没有办法防止透视表在打开documnet时刷新透视表,而

我有一个Excel模板(.xlt),其中包含一个用于报告数据的工作表,以及4个带有透视表的工作表

当我们的报告系统创建报告并将模板应用于该报告时,透视表引用的某些字段不存在,因为在报告系统的过程中会运行宏来创建这些字段

但是,由于这些字段不存在,Excel出现错误(访问组件属性/方法时出错:REFRESH.Reference无效)。为了防止出现这种情况,我在打开文件时取消了所有透视表上刷新数据的选项

我知道我可以使用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
以下是您需要的:

' 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
摘自:
应用程序。不需要计算
Application.Calculation=xlCalculationAutomatic
不仅会恢复设置,还会在调用时进行计算。