2016-04-24 74 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