以编程方式构建Excel数据透视表

时间:2016-04-24 09:45:53

标签: excel pivot-table

我写了一个构建excel报告的脚本。这些报告可能包括数据透视表。要在加载时刷新数据透视表,我在refreshOnLoad="1"文件中添加了pivotCacheDefinition1.xml参数。它只适用于我不喜欢的一件小事 - 当我打开报告时,excel问我“你想要替换目标单元格的内容吗?”?我按“确定”并刷新数据透视表。我不喜欢这个带有这个问题的弹出窗口,我认为很明显,如果指定了refreshOnLoad="1",那么应该始终刷新内容。所以,我的问题是如何抑制弹出这个窗口?

修改

根据this帖子:

  

每当Excel发现它的更新将替换任何现有单元格的内容时,它都会发出警告。这是重要的功能。

那么,它是否意味着当Excel看到数据透视表内容应该被刷新时,它总会发出警告?

修改

似乎我的问题与this类似。但是,我没有使用VB宏,我正在使用其他一些编程语言构建我的报告(以编程方式解压缩xlsx文件并处理其中的所有xml文件)。

修改

好吧,我尝试了Application.AlertBeforeOverwriting = FalseApplication.DisplayAlerts = False,但都没有。

1 个答案:

答案 0 :(得分:1)

我还没有能够重现这个问题,所以这些建议不仅仅是答案。

我认为您正在尝试的命令发生得太晚了 - Excel需要知道"在覆盖之前不要发出警报"在它试图刷新之前。如果它在打开时刷新,那么你设置属性,你有错误的事件序列。

尝试:

  1. 请勿将refreshOnLoad="1"放入您的档案中。
  2. 将VBA例程Workbook_Open()添加到工作簿。
  3. 在VBA例程中,设置属性Application.AlertBeforeOverwriting = False,然后调用方法PivotTable.Refresh
  4. 这应解决任何"事件序列"问题。