Excel 2007: Problemas con macro que arma una tabla dinamica

13/08/2009 - 03:41 por alejo | Informe spam
Hola,

Este problema es en Excel 2007
Les cuento que tengo problemas con una macro la cual crea una tabla
dinamica comun y corriente, uso el grabador de macros y la hago sin
problema. Pero cuando la ejecuto me sale un error.

Prueben a hacer una tabla con unos nombres en la columna A, unos
codigos en la Columna B, tales como ce, xa, etc. inventenselos y en la
Columna C, valores.

nombre tipo valor
alejo ca 4578
conejo eg 4578
sdffdsfd th 4578
sdfsdf fg 4578
jkjhjk ca 4578
fdgbdfd eg 4578
alejo th 4578
conejo fg 4578
sdffdsfd ca 4578
sdfsdf eg 4578
jkjhjk th 4578
fdgbdfd fg 4578
alejo ca 4578
conejo eg 4578
sdffdsfd th 4578
sdfsdf fg 4578
jkjhjk th 4578
fdgbdfd fg 4578

ahora, graben una macro en Excel 2007, y tomen esta tabla, armen una
tabla dinamica y coloquenla en una hoja nueva, agrupen en las filas el
tipo y en los datos el valor.

Mientras graban la macro, excel lo hace sin problemas, pero PRUEBEN
EJECUTARLA Y VERAN QUE SALE UN ERROR.

Este es el codigo que me grabó el grabador de macros:
Sub Macro1()
'
' Macro1 Macro
'

'
Sheets.Add
'Este es el bloque problema: sale el error "argumento o llamada o
procedimiento no valida"
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase,
SourceData:= _
"Hoja1!F1C1:F19C3",
Version:=xlPivotTableVersion12).CreatePivotTable _
TableDestination:="Hoja4!F3C1", TableName:="Tabla dinámica1",
_
DefaultVersion:=xlPivotTableVersion12

Sheets("Hoja4").Select
Cells(3, 1).Select
With ActiveSheet.PivotTables("Tabla dinámica1").PivotFields
("tipo")
.Orientation = xlRowField
.Position = 1
End With
ActiveSheet.PivotTables("Tabla dinámica1").AddDataField
ActiveSheet.PivotTables _
("Tabla dinámica1").PivotFields("valor"), "Suma de valor",
xlSum
End Sub

Le he botado corriente como decimos en Colombia y no se que pueda ser.
Les agradezco su colaboracion.

Saludos,
 

Leer las respuestas

#1 Héctor Miguel
13/08/2009 - 05:35 | Informe spam
hola, alejo !

1) la grabadora usa como referencia al "SourceData" el estilo...=> FC (F1C1 <-> Fila y Columna)
vba que es US-Centric "espera" la nomenclatura en ingles... => RC (R1C1 <-> Row y Column)
-> OJO: que pasa igual con el "TableDestination:=..."

2) para el "SourceData=" puedes usar instrucciones del tipo...
Range("a1").CurrentRegion
.Offset (y/u) .Offset(...).Resize(...)

-> prueba cambiando la seccion del SourceData con algo +/- como lo siguiente:
..., SourceData:=Worksheets("hoja1").UsedRange.Address(1, 1, xlR1C1, 1)

o... si la hoja tiene dos (o mas) "areas" de trabajo en uso, prueba cambiando a:
..., SourceData:=Worksheets("hoja1").Range("a1").CurrentRegion.Address(1, 1, xlR1C1, 1)

tambien puedes definir un rango dinamico directamente sobre la hoja de calculo
(p.e.) visita: http://www.contextures.com/xlPivot01.html

3) tambien es posible el uso de referencias "directas" al estilo A1 (sourcedata y tabledestination) -p.e.-
... SourceData:=Worksheets("hoja1").Range("a1:c19")
... TableDestination:=Worksheets("hoja4").Range("c3")

si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.

__ OP __
Este problema es en Excel 2007
Les cuento que tengo problemas con una macro la cual crea una tabla dinamica comun y corriente
uso el grabador de macros y la hago sin problema. Pero cuando la ejecuto me sale un error.

Prueben a hacer una tabla con unos nombres en la columna A, unos codigos en la Columna B, tales como ce, xa, etc.
inventenselos y en la Columna C, valores.

nombre tipo valor
alejo ca 4578
conejo eg 4578
sdffdsfd th 4578
sdfsdf fg 4578
jkjhjk ca 4578
fdgbdfd eg 4578 (...)

ahora, graben una macro en Excel 2007, y tomen esta tabla, armen una tabla dinamica y coloquenla en una hoja nueva
agrupen en las filas el tipo y en los datos el valor.

Mientras graban la macro, excel lo hace sin problemas, pero PRUEBEN EJECUTARLA Y VERAN QUE SALE UN ERROR.

Este es el codigo que me grabó el grabador de macros:
Sub Macro1()
Sheets.Add
'Este es el bloque problema: sale el error "argumento o llamada o procedimiento no valida"
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
"Hoja1!F1C1:F19C3", Version:=xlPivotTableVersion12).CreatePivotTable _
TableDestination:="Hoja4!F3C1", TableName:="Tabla dinámica1", _
DefaultVersion:=xlPivotTableVersion12
Sheets("Hoja4").Select
Cells(3, 1).Select
With ActiveSheet.PivotTables("Tabla dinámica1").PivotFields("tipo")
.Orientation = xlRowField
.Position = 1
End With
ActiveSheet.PivotTables("Tabla dinámica1").AddDataField ActiveSheet.PivotTables _
("Tabla dinámica1").PivotFields("valor"), "Suma de valor", xlSum
End Sub

Le he botado corriente como decimos en Colombia y no se que pueda ser.
Les agradezco su colaboracion...

Preguntas similares