Forum

VBA-Establish conne...
 
Notifications
Clear all

VBA-Establish connection of existing slicers to a new pivot table

2 Posts
2 Users
0 Reactions
360 Views
(@hayley123)
Posts: 1
New Member
Topic starter
 

Hello All,

I am trying to establish a connection between existing slicers and a new pivot table. 

Background: I have slicers on the main dashboard, and  I need to be able to run a macro that creates a report/pivot table based on the slicers chosen from the main dashboard. 

My slicers are named as follows (I need all 4 to connect to the new pivot table): 

-CODE

-Investigator

-Date

-Class

Code written so farConfused

Sub Pleasework()

Dim PSheet As Worksheet
Dim DSheet As Worksheet
Dim PCache As PivotCache
Dim PTable As PivotTable
Dim PRange As Range
Dim LastRow As Long
Dim LastCol As Long

'Declare Variables
On Error Resume Next
Application.DisplayAlerts = False
Worksheets("PivotTable").Delete
Sheets.Add Before:=ActiveSheet
ActiveSheet.Name = "PivotTable"
Application.DisplayAlerts = True
Set PSheet = Worksheets("PivotTable")
Set DSheet = Worksheets("FY17-21 Data")

'Define Data Range
LastRow = DSheet.Cells(Rows.Count, 1).End(xlUp).Row
LastCol = DSheet.Cells(1, Columns.Count).End(xlToLeft).Column
Set PRange = DSheet.Cells(1, 1).Resize(LastRow, LastCol)

 

'Define Pivot Cache
Set PCache = ActiveWorkbook.PivotCaches.Create _
(SourceType:=xlDatabase, SourceData:=PRange). _
CreatePivotTable(TableDestination:=PSheet.Cells(2, 2), _
TableName:="FilteredRevenue")

 

'Insert Blank Pivot Table
Set PTable = PCache.CreatePivotTable _
(TableDestination:=PSheet.Cells(1, 1), TableName:="FilteredRevenue")

'Insert Row Fields
With ActiveSheet.PivotTables("FilteredRevenue").PivotFields("CODE")
.Orientation = xlRowField
.Position = 1
End With

With ActiveSheet.PivotTables("FilteredRevenue").PivotFields("Investigator ")
.Orientation = xlRowField
.Position = 2
End With

'Insert Data Field
With ActiveSheet.PivotTables("FilteredRevenue").PivotFields("Care Days-Actual ")
.Orientation = xlDataField
.Position = 1
.Function = xlSum
.NumberFormat = "#,##0"
.Name = "Care Days"
End With

'Insert Data Field
With ActiveSheet.PivotTables("FilteredRevenue").PivotFields("Revenue-Actual ")
.Orientation = xlDataField
.Position = 2
.Function = xlSum
.NumberFormat = "$#,###.00"
.Name = "Revenue"
End With

End Sub

Any help is very appreciated! 

 
Posted : 09/04/2021 11:02 am
(@catalinb)
Posts: 1937
Member Admin
 

Hi Hayley,

You should not create new caches for new pivot tables, if they share the same data source. Slicers cannot be connected to multiple pivot tables if they don't have the same pivot cache.

Here is a link where you will find useful codes for what you need.

https://www.contextures.com/xlpivot11.html

ChangePivotCache is one code that you should run, then look into Create Pivot From Cache section (ShowCacheIndex will reveal the index you are looking for)

To connect all slicers to all pivot tables, see this post:  https://www.myonlinetraininghub.com/excel-forum/vba-macros/sync-slicers-through-vba#p15421 
 
Posted : 13/04/2021 6:30 am
Share: