2016-04-24 64 views
2

我寫了一個構建Excel報告的腳本。這些報告可能包含數據透視表。要刷新加載的數據透視表,我在pivotCacheDefinition1.xml文件中添加了refreshOnLoad="1"參數。它只適用於我不喜歡的一件小事 - 當我打開一份報告時,excel問我「是否要替換目標單元格的內容」?我按「確定」,它刷新數據透視表。我不喜歡這個問題的彈出窗口,我認爲很明顯,如果指定了refreshOnLoad="1",那麼應該總是刷新內容。所以,我的問題是如何抑制這個窗口彈出?以編程方式構建Excel數據透視表

編輯

根據this螺紋:

只要Excel會發現,它的更新將替換現有單元格的內容,它將警告you.It是重要特徵。

那麼,這是否意味着Excel會一直警告,當它看到數據透視表內容應該被刷新?

編輯

好像我的問題是類似this之一。然而,我沒有使用VB宏,我用其他一些編程語言(以編程方式解壓縮xlsx文件並處理所有這些xml文件)編寫我的報告。

編輯

嗯,我都嘗試Application.AlertBeforeOverwriting = FalseApplication.DisplayAlerts = False,但他們沒有工作。

回答

1

我還沒有能夠重現這個問題,所以這些都是比答案更多的建議。

我認爲您正在嘗試的命令發生得太晚 - Excel在嘗試刷新之前需要知道「在覆蓋之前不要提醒」。如果它打開時刷新,那麼你設置了屬性,你有錯誤的事件序列。

嘗試:

  1. 不要把refreshOnLoad="1"在您的文件。
  2. 將VBA例程Workbook_Open()添加到工作簿。
  3. 在VBA例程中,設置屬性Application.AlertBeforeOverwriting = False,然後調用方法PivotTable.Refresh

這應該解決任何「事件序列」問題。

+0

我只希望,我可以使用refreshOnLoad = 1並仍然解析「事件序列」。我只是不喜歡這個想法嚴重依賴VBA例程 – Jacobian