我对我的报告有些困难,我希望能够用VBA做的是刷新我在数据透视表选项卡上的所有数据透视表,还添加新日期每当我刷新我的查询时都会填充。
评论: 我确实有一段我在这里获得的代码,但它只是为了更新表(我需要将其与抓取查询刷新时每天填充的新日期结合起来):
Sub RefreshAllPivots()
Dim PC As PivotCache
For Each PC In ActiveWorkbook.PivotCaches
PC.Refresh
Next PC
End Sub

答案 0 :(得分:0)
尝试录制所需操作的宏,然后查看代码。另外,请查看具有类似问题的人的此链接。
答案 1 :(得分:0)
所以你必须清除过滤器以使其正常工作... IDK为什么会这样,但无论如何......
pt.PivotFields( “SHIFTDT”)。ClearAllFilters
我完成的(经过测试和运行的)代码的一部分:
Sub RefreshAllPivots()
'= This will updated all the pivot tables in your workbook
Dim PC As PivotCache
For Each PC In ActiveWorkbook.PivotCaches
PC.Refresh
Next PC
Dim SttDT As Date
Dim EndDT As Date
Dim ThisDate As Date
Dim ws As Worksheet
Dim pt As PivotTable
Set pt = Sheets("Pivot Tables").PivotTables("AWAYTIME")
'= This is just to setup the dates
Set ws = Worksheets("Pivot Tables")
ThisDate = Date
SttDT = "2/08/2015"
EndDT = DateAdd("d", -1, ThisDate)
ws.Select
'= This will perform the actual action. Replace your values under the
'= Set PT declaration, and change the SttDT and EndDT to your needs.
'= You can copy this section for as many tables you are updating.
Set pt = Sheets("Pivot Tables").PivotTables("AWAYTIME")
pt.PivotFields("SHIFTDT").ClearAllFilters
pt.PivotFields("SHIFTDT").PivotFilters. _
Add Type:=xlDateBetween, Value1:=SttDT, Value2:=EndDT
pt.PivotFields("SHIFTDT").AutoSort xlAscending, "SHIFTDT"
End Sub
感谢您的回复,我有答案。
ActiveSheet.PivotTables("AWAYTIME").PivotFields("SHIFTDT").PivotFilters. _
Add Type:=xlDateBetween, Value1:="2/08/2015", Value2:=DateAdd("D", -1, Now())
因此在循环运行之后,我将只需为我正在更新的每个表创建其中一个片段(如12个左右),它将设置从2月8日到任何“昨天”日期的范围是
如果需要,任何人都可以修改:
ActiveSheet.PivotTables("Your Pivot Table Name Here").PivotFields("Your Filter Field Here").PivotFilters. _
Add Type:=xlDateBetween, Value1:="Your Start Date", Value2:"Your End Date"