刷新数据透视表时防止覆盖

时间:2017-02-23 18:58:05

标签: excel-vba pivot-table vba excel

我有一个宏,每周更新一个数据透视表,将表扩展到新列。其他用户在我想要保留的数据透视表右侧的列中创建了注释。刷新桌面后,我会收到一条警告,其中已经有XXXX中的数据。你想替换它吗?"

有没有办法检测将表格指向新来源是否会引起警报并自动取消?我不能设置

Application.DisplayAlerts = False

因为这会忽略警告并覆盖注释。我尝试了以下操作,但警报中断阻止执行下一行。

Set pvtTbl = reconWB.Worksheets("PIVOT_ALL").PivotTables("PIVOT_ALL")
On Error Resume Next
pvtTbl.SourceData = rawData     'Updates pivot and causes the "There's already data..." alert if there are notes
SendKeys "{ESCAPE}"             'My attempt to close the alert window, but the alert interupt prevents further execution

'The following works, if I select "Cancel" and close the alert
Do While Err <> 0
    reconWB.Worksheets("PIVOT_ALL").Columns(pvtTbl.DataBodyRange.Columns.Count + 2).Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
    Err = 0
    pvtTbl.SourceData = rawData
    SendKeys "{ESCAPE}"
Loop
On Error GoTo 0
pvtTbl.RefreshTable

我讨厌搞乱错误处理,但我无法想到另一种方法。不是我尝试过的!谢谢你的期待!

0 个答案:

没有答案