Ayuda con Pivot en VBA

10/05/2007 - 18:20 por Murphy | Informe spam
Saludos a todo el grupo!

Grabe la siguiente Macro:

Lo que hace basicamente es crear una pivot y quitar los totales de los
campos que la componen.

Funciona sin ningun problema, para esa hoja.

Necesito que se ejecute en otras hojas con distintos nombres, me
parece que la clave esta en esta linea: "'Retail 1'!
R1C1:R1679C13").CreatePivotTable TableDestination:="", _, sin embargo
no soy ningun experto.

Como puedo hacer que funcione para otras hojas con distintos
nombres?????; Retail 2, Retail 3, Retail 4, Retail 5, etc, etc. Todas
las hojas tienen los mismos encabezados pero el total de registros es
variable

Gracias por su valiosa ayuda





Sub Macro2()

ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase,
SourceData:= _
"'Retail 1'!R1C1:R1679C13").CreatePivotTable
TableDestination:="", _
TableName:="Tabla dinámica2",
DefaultVersion:=xlPivotTableVersion10
ActiveSheet.PivotTableWizard
TableDestination:=ActiveSheet.Cells(3, 1)
ActiveSheet.Cells(3, 1).Select
With ActiveSheet.PivotTables("Tabla
dinámica2").PivotFields("ID Retailer")
.Orientation = xlRowField
.Position = 1
End With
With ActiveSheet.PivotTables("Tabla
dinámica2").PivotFields("Año")
.Orientation = xlRowField
.Position = 2
End With
With ActiveSheet.PivotTables("Tabla
dinámica2").PivotFields("Mes")
.Orientation = xlRowField
.Position = 3
End With
With ActiveSheet.PivotTables("Tabla
dinámica2").PivotFields("Semana")
.Orientation = xlRowField
.Position = 4
End With
With ActiveSheet.PivotTables("Tabla dinámica2").PivotFields("No.
Tienda")
.Orientation = xlRowField
.Position = 5
End With
With ActiveSheet.PivotTables("Tabla
dinámica2").PivotFields("Nombre Tienda")
.Orientation = xlRowField
.Position = 6
End With
With ActiveSheet.PivotTables("Tabla dinámica2").PivotFields("SKU")
.Orientation = xlRowField
.Position = 7
End With
With ActiveSheet.PivotTables("Tabla dinámica2").PivotFields( _
"Descripción Producto")
.Orientation = xlRowField
.Position = 7
End With
Range("G4").Select
With ActiveSheet.PivotTables("Tabla dinámica2").PivotFields( _
"Descripción Producto")
.Orientation = xlRowField
.Position = 8
End With
ActiveWindow.SmallScroll ToRight:=7
ActiveSheet.PivotTables("Tabla dinámica2").AddDataField
ActiveSheet.PivotTables _
("Tabla dinámica2").PivotFields("Ventas U"), "Suma de Ventas
U", xlSum
ActiveSheet.PivotTables("Tabla dinámica2").AddDataField
ActiveSheet.PivotTables _
("Tabla dinámica2").PivotFields("Ventas $"), "Suma de Ventas
$", xlSum
ActiveSheet.PivotTables("Tabla dinámica2").AddDataField
ActiveSheet.PivotTables _
("Tabla dinámica2").PivotFields("Inventario U"), "Suma de
Inventario U", xlSum
ActiveSheet.PivotTables("Tabla dinámica2").AddDataField
ActiveSheet.PivotTables _
("Tabla dinámica2").PivotFields("Inventario $"), "Suma de
Inventario $", xlSum
Range("I3").Select
With ActiveSheet.PivotTables("Tabla dinámica2").DataPivotField
.Orientation = xlColumnField
.Position = 1
End With
Range("H4").Select
ActiveSheet.PivotTables("Tabla
dinámica2").PivotFields("Descripción Producto"). _
Subtotals = Array(False, False, False, False, False, False,
False, False, False, False, _
False, False)
ActiveWindow.SmallScroll ToRight:=-7
Range("G4").Select
ActiveSheet.PivotTables("Tabla
dinámica2").PivotFields("SKU").Subtotals = Array _
(False, False, False, False, False, False, False, False,
False, False, False, False)
Range("F4").Select
ActiveSheet.PivotTables("Tabla dinámica2").PivotFields("Nombre
Tienda"). _
Subtotals = Array(False, False, False, False, False, False,
False, False, False, False, _
False, False)
Range("E4").Select
ActiveSheet.PivotTables("Tabla dinámica2").PivotFields("No.
Tienda").Subtotals _
= Array(False, False, False, False, False, False, False,
False, False, False, False, False _
)
Range("D4").Select
ActiveSheet.PivotTables("Tabla
dinámica2").PivotFields("Semana").Subtotals = _
Array(False, False, False, False, False, False, False, False,
False, False, False, False)
Range("C4").Select
ActiveSheet.PivotTables("Tabla
dinámica2").PivotFields("Mes").Subtotals = Array _
(False, False, False, False, False, False, False, False,
False, False, False, False)
Range("B4").Select
ActiveSheet.PivotTables("Tabla
dinámica2").PivotFields("Año").Subtotals = Array _
(False, False, False, False, False, False, False, False,
False, False, False, False)
Range("A4").Select
ActiveSheet.PivotTables("Tabla dinámica2").PivotFields("ID
Retailer"). _
Subtotals = Array(False, False, False, False, False, False,
False, False, False, False, _
False, False)
Columns("A:L").Select
Columns("A:L").EntireColumn.AutoFit
End Sub
 

Leer las respuestas

#1 Arcano
10/05/2007 - 21:35 | Informe spam
On 10 mayo, 12:20, Murphy wrote:
Saludos a todo el grupo!

Grabe la siguiente Macro:

Lo que hace basicamente es crear una pivot y quitar los totales de los
campos que la componen.

Funciona sin ningun problema, para esa hoja.

Necesito que se ejecute en otras hojas con distintos nombres, me
parece que la clave esta en esta linea: "'Retail 1'!
R1C1:R1679C13").CreatePivotTable TableDestination:="", _, sin embargo
no soy ningun experto.

Como puedo hacer que funcione para otras hojas con distintos
nombres?????; Retail 2, Retail 3, Retail 4, Retail 5, etc, etc. Todas
las hojas tienen los mismos encabezados pero el total de registros es
variable

Gracias por su valiosa ayuda

Sub Macro2()

ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase,
SourceData:= _
"'Retail 1'!R1C1:R1679C13").CreatePivotTable
TableDestination:="", _
TableName:="Tabla dinámica2",
DefaultVersion:=xlPivotTableVersion10
ActiveSheet.PivotTableWizard
TableDestination:=ActiveSheet.Cells(3, 1)
ActiveSheet.Cells(3, 1).Select
With ActiveSheet.PivotTables("Tabla
dinámica2").PivotFields("ID Retailer")
.Orientation = xlRowField
.Position = 1
End With
With ActiveSheet.PivotTables("Tabla
dinámica2").PivotFields("Año")
.Orientation = xlRowField
.Position = 2
End With
With ActiveSheet.PivotTables("Tabla
dinámica2").PivotFields("Mes")
.Orientation = xlRowField
.Position = 3
End With
With ActiveSheet.PivotTables("Tabla
dinámica2").PivotFields("Semana")
.Orientation = xlRowField
.Position = 4
End With
With ActiveSheet.PivotTables("Tabla dinámica2").PivotFields("No.
Tienda")
.Orientation = xlRowField
.Position = 5
End With
With ActiveSheet.PivotTables("Tabla
dinámica2").PivotFields("Nombre Tienda")
.Orientation = xlRowField
.Position = 6
End With
With ActiveSheet.PivotTables("Tabla dinámica2").PivotFields("SKU")
.Orientation = xlRowField
.Position = 7
End With
With ActiveSheet.PivotTables("Tabla dinámica2").PivotFields( _
"Descripción Producto")
.Orientation = xlRowField
.Position = 7
End With
Range("G4").Select
With ActiveSheet.PivotTables("Tabla dinámica2").PivotFields( _
"Descripción Producto")
.Orientation = xlRowField
.Position = 8
End With
ActiveWindow.SmallScroll ToRight:=7
ActiveSheet.PivotTables("Tabla dinámica2").AddDataField
ActiveSheet.PivotTables _
("Tabla dinámica2").PivotFields("Ventas U"), "Suma de Ventas
U", xlSum
ActiveSheet.PivotTables("Tabla dinámica2").AddDataField
ActiveSheet.PivotTables _
("Tabla dinámica2").PivotFields("Ventas $"), "Suma de Ventas
$", xlSum
ActiveSheet.PivotTables("Tabla dinámica2").AddDataField
ActiveSheet.PivotTables _
("Tabla dinámica2").PivotFields("Inventario U"), "Suma de
Inventario U", xlSum
ActiveSheet.PivotTables("Tabla dinámica2").AddDataField
ActiveSheet.PivotTables _
("Tabla dinámica2").PivotFields("Inventario $"), "Suma de
Inventario $", xlSum
Range("I3").Select
With ActiveSheet.PivotTables("Tabla dinámica2").DataPivotField
.Orientation = xlColumnField
.Position = 1
End With
Range("H4").Select
ActiveSheet.PivotTables("Tabla
dinámica2").PivotFields("Descripción Producto"). _
Subtotals = Array(False, False, False, False, False, False,
False, False, False, False, _
False, False)
ActiveWindow.SmallScroll ToRight:=-7
Range("G4").Select
ActiveSheet.PivotTables("Tabla
dinámica2").PivotFields("SKU").Subtotals = Array _
(False, False, False, False, False, False, False, False,
False, False, False, False)
Range("F4").Select
ActiveSheet.PivotTables("Tabla dinámica2").PivotFields("Nombre
Tienda"). _
Subtotals = Array(False, False, False, False, False, False,
False, False, False, False, _
False, False)
Range("E4").Select
ActiveSheet.PivotTables("Tabla dinámica2").PivotFields("No.
Tienda").Subtotals _
= Array(False, False, False, False, False, False, False,
False, False, False, False, False _
)
Range("D4").Select
ActiveSheet.PivotTables("Tabla
dinámica2").PivotFields("Semana").Subtotals = _
Array(False, False, False, False, False, False, False, False,
False, False, False, False)
Range("C4").Select
ActiveSheet.PivotTables("Tabla
dinámica2").PivotFields("Mes").Subtotals = Array _
(False, False, False, False, False, False, False, False,
False, False, False, False)
Range("B4").Select
ActiveSheet.PivotTables("Tabla
dinámica2").PivotFields("Año").Subtotals = Array _
(False, False, False, False, False, False, False, False,
False, False, False, False)
Range("A4").Select
ActiveSheet.PivotTables("Tabla dinámica2").PivotFields("ID
Retailer"). _
Subtotals = Array(False, False, False, False, False, False,
False, False, False, False, _
False, False)
Columns("A:L").Select
Columns("A:L").EntireColumn.AutoFit
End Sub





Haces un ciclo que englobe todo el codigo que tienes,
For i = 1 to 5
'aca va tu codigo
Next i


Reemplaza el nombre de la hoja por

"Retail "& i

ejemplo: .SourceData:= "'Retail "& i '!R1C1:R1679C13".

es una idea..a ver si alguien puede ayudarte más.
Suerte.

Preguntas similares