3

レポート データ用のワークシートと、ピボット テーブルを含む 4 つのワークシートを含む Excel テンプレート (.xlt) があります。

レポート システムがレポートを作成し、それにテンプレートを適用すると、レポート システムのプロセスの一部として作成するためにマクロが実行されるため、ピボット テーブルによって参照されるフィールドの一部が存在しません。

ただし、これらのフィールドが存在しないため、Excel はエラーをスローしています (コンポーネント プロパティ/メソッドへのアクセス中にエラーが発生しました: REFRESH。参照が無効です。)。これを回避するために、すべてのピボット テーブルのオプションの設定を解除しました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
4

1 に答える 1

2

必要なものは次のとおりです。

' 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

于 2012-09-28T16:03:27.067 に答える