2013-10-24 28 views
0

我想創建一個宏,可以將日常報告拉入數據透視表。我對VB非常陌生,但慢慢地解決了這個問題。我希望activeworkbook是我正在使用的而不是預定義的名稱(這裏是報告(40))。宏數據透視表自動更新日期和名稱

然後,我希望它採取整個範圍(每天增加),並製作一個數據透視表。

最後,我想數據只使用今天的日期。

任何幫助?

Sub DailyS() 
' 
' DailyS Macro 
' 
' Keyboard Shortcut: Ctrl+d 
' 
    Sheets.Add 
    ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, **SourceData:= _ 
     "report (40)!R1C1:R324C129**", Version:=xlPivotTableVersion15). _ 
     CreatePivotTable TableDestination:="**Sheet1!R3C1**", TableName:="PivotTable13" _ 
     , DefaultVersion:=xlPivotTableVersion15 

Sheets("Sheet1").Select 
    Cells(3, 1).Select 
    With ActiveSheet.PivotTables("PivotTable13").PivotFields("Date") 
     .Orientation = xlRowField 
     .Position = 1 
    End With 
With ActiveSheet.PivotTables("PivotTable13").PivotFields("UserP") 
    .Orientation = xlRowField 
    .Position = 2 
End With 

With ActiveSheet.PivotTables("PivotTable13").PivotFields(**"Date"**) 
    .Orientation = xlPageField 
    .Position = 1 
End With 

ActiveSheet.PivotTables("PivotTable13").PivotFields("Date").CurrentPage = _ 
    "(All)" 
With ActiveSheet.PivotTables("PivotTable13").PivotFields("Date") 
    .PivotItems("10/1/2013").Visible = False 
    .PivotItems("10/2/2013").Visible = False 
    .PivotItems("10/3/2013").Visible = False 
    .PivotItems("10/4/2013").Visible = False 
    .PivotItems("10/5/2013").Visible = False 
    .PivotItems("10/6/2013").Visible = False 
    .PivotItems("10/7/2013").Visible = False 
    .PivotItems("10/8/2013").Visible = False 
    .PivotItems("10/9/2013").Visible = False 
    .PivotItems("10/10/2013").Visible = False 
    .PivotItems("10/11/2013").Visible = False 
    .PivotItems("10/12/2013").Visible = False 
    .PivotItems("10/13/2013").Visible = False 
    .PivotItems("10/14/2013").Visible = False 
    .PivotItems("10/15/2013").Visible = False 
    .PivotItems("10/16/2013").Visible = False 
    .PivotItems("10/17/2013").Visible = False 
    .PivotItems("10/18/2013").Visible = False 
    .PivotItems("10/19/2013").Visible = False 
    .PivotItems("10/20/2013").Visible = False 
    .PivotItems("10/21/2013").Visible = False 
    .PivotItems("10/22/2013").Visible = False 
End With 

回答

0

我只是第二次猜測你想要什麼。
但爲了幫助您入門,以下是一些可能有所幫助的代碼。

更新數據透視表源代碼並選擇Pivot中的指定日期的代碼。

Dim pt as PivotTable, pt_item as PivotItem 
Dim date_stamp as Date, source_data as string 
Dim ws as WorkSheet 
Dim Last_row as Long 

Set ws = Activeworkbook.Sheets(1) 'considering Sheet1 has the pivot. 
Last_row = ws.Range("A" & ws.Rows.Count).End(xlup).Row  

source_data = ws.Name & "!" & ws.Range("A1:E" & Last_row).Address(ReferenceStyle:=xlR1C1) 
'source_data contains your dynamic range address 
date_stamp = Format(Now(), "m/d/yyyy") 'this contains the date now, format as you wish 

For Each pt in ws.PivotTables 
If pt.Name = "PivotTable13" then 
    pt.ChangePivotCache ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, _ 
      SourceData:=source_data) 'this refresh the data source 
    'this For Loop Selects the Current Date, just change the field name 
    For Each pt_item In pt.PivotFields("Field_Name").PivotItems 
     Select Case pt_item.Name 
     Case date_stamp 
      pt_item.Visible = True     
     Case Else    
      pt_item.Visible = False    
     End Select    
    Next pt_item 
end if 
Next pt 

不完全是你需要的,但我希望這可以讓你開始。
我只假定您的數據包含在Columns A:E中。