Come definire dynamicmente la sorgente della tabella PIVOT?

Sto cercando di fare una tabella PIVOT da diversi fogli di lavoro e inserire ciascuna output PIVOT in una certa colonna in una tabella.

Sub PivotvpcodeSATURATION() Dim wsNew As Worksheet Dim i As Integer Dim z As Integer Set ws1 = ActiveWorkbook.Sheets("24.11.") Set ws2 = ActiveWorkbook.Sheets("25.11.") Set ws3 = ActiveWorkbook.Sheets("26.11.") Set ws4 = ActiveWorkbook.Sheets("27.11.") Set ws5 = ActiveWorkbook.Sheets("28.11.") Set ws6 = ActiveWorkbook.Sheets("29.11.") Set ws7 = ActiveWorkbook.Sheets("30.11.") Set wsNew = Sheets.Add i = 3 z = 16 Do ws1.Select Range("A2").Select ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _ "24.11.!R1C2:R11754C10", Version:=xlPivotTableVersion14).CreatePivotTable _ TableDestination:=wsNew.Name & "!R3C1", TableName:="PivotTable", DefaultVersion _ :=xlPivotTableVersion14 wsNew.Select Cells(3, 1).Select With ActiveSheet.PivotTables("PivotTable").PivotFields("VP CODE") .Orientation = xlRowField .Position = 1 End With wsNew.Select ActiveSheet.PivotTables("PivotTable").AddDataField ActiveSheet.PivotTables( _ "PivotTable").PivotFields("1/0"), "Sum of 1/0", xlSum wsNew.Select Range("B4").Select Range(Selection, Selection.End(xlDown)).Select Selection.Copy Sheets("VP_Saturation").Select ' Range(Cells(3, z).Address).Select ActiveSheet.Paste Application.DisplayAlerts = False wsNew.Delete Application.DisplayAlerts = True z = z + 2 Loop Until z = 28 End Sub 

La cosa che non riesco a raggiungere è,

come definire un nome di fogli di lavoro come una variabile, in modo che non sia necessario select w1, w2, w .., wn each volta e non è necessario inserire un nome di foglio all'interno di 24.11.! R1C2: R11754C10 .

Inoltre il nome della colonna in cui inserire il risultato di copia copiato definisce come una cella di variables (3, z) .Address.Seleziona , ma questa string restituisce un errore.

Forse qualcuno può aiutare con esso? Grazie!

mettere tutti i fogli di lavoro in un arrays e fare un ciclo su ciascun elemento dell'arrays con For Each....Next

per quanto riguarda la seconda domanda, cambia:
SourceData:="24.11.!R1C2:R11754C10"
a
SourceData:=ws1.name&"!R1C2:R11754C10" e alimenterà il nome del foglio di lavoro nella string

terza domanda: sostituire
Range(Cells(3, z).Address).Select
con
Cells(3, z).Select