2016-07-28 61 views
1

我在寻找与以下错误的帮助。运行时错误'1004'数据透视表错误

我有一些VBA代码打开工作簿并在包含数据透视表的工作表中复制。

然后代码选择数据透视表,按日期过滤并复制一些字段。

此功能在首次使用时完美运行。然而,当这个报告是每天使用一次以上,它击中了以下错误:

enter image description here

的问题是与数据透视表名的分配,在VBA中只使用系统默认值。代码如下:

Sheets("Sheet1").Select 

ActiveWorkbook.ShowPivotTableFieldList = False 

ActiveSheet.PivotTables("PivotTable1").PivotFields("Date ").AutoSort _ 
    xlDescending, "Date " 

是否有另一种方法动态选择数据透视表而不管名称?

或者,是否有代码在执行结束时清除历史记录,以便每次运行报告时都将支持1?

任何帮助将不胜感激。

在此先感谢

+0

如果总是有1个支点,那么'.PivotTables(1)'也许? –

回答

2

如果你知道只会有一个数据透视表(因为它似乎你已经打算在您的文章传达,虽然我可能已经misinterpretted这一点),这是更好地使用索引比名称,因为如果在创建新数据透视表时另一个名称存在,名称将会不同。更改您的通话:

If Sheets("Sheet1").PivotTables.Count <> 0 Then 
    Sheets("Sheet1").PivotTables(1).PivotFields("Date ").AutoSort xlDescending, "Date " 
End If 

注意我还删除了“选择”的用法,因为这被认为是不好的做法为variety of reasons

+1

你打我吧:D –

+1

@SiddharthRout我一生中最骄傲的一天:P – RGA