Macro y Tabla Dinamica

26/03/2008 - 03:43 por Alopez | Informe spam
Buenas Noches Amigos(as)

Nuevamente necesito de su valiosa ayuda ,

Ya tengo creada una Tabla Dinamica pero me piden Crear una Macro que
permita hacer una copia de esa tabla dinamica ya creada, en una nueva
hoja.

Si alguien puede ayudarme con esto se lo agradecere mucho.

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
26/03/2008 - 06:28 | Informe spam
hola, !

Ya tengo creada una Tabla Dinamica
pero me piden Crear una Macro que permita hacer una copia de esa tabla dinamica ya creada, en una nueva hoja...



op1: si la hoja solo contiene la tabla dinamica... prueba a copiar la hoja (dentro del mismo libro)

op2: si la tabla dinamica es "parte de..." otros objetos en la hoja (incluso el origen del cache de la tabla)...
suponiendo que la hoja se llama "hoja1" y quieres una copia de la tabla en la "hoja3" a partir de la celda "b3" -???-
la siguiente instruccion puedes ponerla dentro de una macro, o ejecutarla directamente desde la ventana de inmediato

worksheets("hoja1").pivottables(1).tablerange2.copy destination:=worksheets("hoja3").range("b3")

con las dos opciones anteriores, las tablas dinamicas comparten el origen de datos (y lo que suceda con el) ;)

si el asunto es menos sencillo que mis supuestos -?- comentarias los detalles faltantes ?
saludos,
hector.
Respuesta Responder a este mensaje
#2 juan
03/06/2008 - 04:21 | Informe spam
hector: ya pude definir el rango dinamico, lo que me esta tirando error en el
codigo de la macro es cuando defino el rango, al cual llame "lolo", aca te
paso el codigo para ver si podes ver donde esta el error, desde ya muchas
gracias,

juan
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
"data!lolo").CreatePivotTable TableDestination:="", TableName:= _
"Tabla dinámica1", DefaultVersion:=xlPivotTableVersion10
"Héctor Miguel" escribió:

hola, !

> Ya tengo creada una Tabla Dinamica
> pero me piden Crear una Macro que permita hacer una copia de esa tabla dinamica ya creada, en una nueva hoja...

op1: si la hoja solo contiene la tabla dinamica... prueba a copiar la hoja (dentro del mismo libro)

op2: si la tabla dinamica es "parte de..." otros objetos en la hoja (incluso el origen del cache de la tabla)...
suponiendo que la hoja se llama "hoja1" y quieres una copia de la tabla en la "hoja3" a partir de la celda "b3" -???-
la siguiente instruccion puedes ponerla dentro de una macro, o ejecutarla directamente desde la ventana de inmediato

worksheets("hoja1").pivottables(1).tablerange2.copy destination:=worksheets("hoja3").range("b3")

con las dos opciones anteriores, las tablas dinamicas comparten el origen de datos (y lo que suceda con el) ;)

si el asunto es menos sencillo que mis supuestos -?- comentarias los detalles faltantes ?
saludos,
hector.



Respuesta Responder a este mensaje
#3 Héctor Miguel
03/06/2008 - 05:36 | Informe spam
hola, juan !

... ya pude definir el rango dinamico, lo que me esta tirando error en el codigo de la macro es cuando defino el rango
al cual llame "lolo", aca te paso el codigo para ver si podes ver donde esta el error, desde ya muchas gracias

ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
"data!lolo").CreatePivotTable TableDestination:="", TableName:= _
"Tabla dinámica1", DefaultVersion:=xlPivotTableVersion10



aunque este codigo no es "lo mismo" que solicitabas originalmente en tu consulta (hacer una copia de una TD)...
... me piden Crear una Macro que permita hacer una copia de esa tabla dinamica ya creada, en una nueva hoja...







y si estas seguro de que el error en el codigo se debe a la parte del nombre...

1) prueba comprobando que el nombre ha quedado definido correctamente...
pulsa la tecla {F5} e introduce "el nombre" (en este caso: lolo) y pulsas {enter}

2) si el paso anterior NO te lleva al rango que nombraste de forma "dinamica"...
comenta que formula utilizaste para definir el nombre (y cual era la hoja y la celda activa en ese momento)

saludos,
hector.
Respuesta Responder a este mensaje
#4 juan
03/06/2008 - 22:46 | Informe spam
Hector: defini el rango variable como database con la siguiente formula
="OFFSET(Data!$A$1,0,0,COUNTA(Data!$A:$A),COUNTA(Data!$1:$1) " por supuesto
la hoja se llama data, te dejo un mail con la contraseña por si queres ver el
archivo y macro incluida
casanova dede ya nuevamente gracias

juan
Respuesta Responder a este mensaje
#5 Héctor Miguel
04/06/2008 - 00:15 | Informe spam
hola, juan !

... defini el rango variable como database con la siguiente formula
="OFFSET(Data!$A$1,0,0,COUNTA(Data!$A:$A),COUNTA(Data!$1:$1) "
por supuesto la hoja se llama data ...



hay dos "detalles" con el procedimiento que utilizas...

1) el nombre que defines (database) suele ser un nombre "de uso reservado"
(si lo utilizas de forma personalizada crearas conflictos con procedimientos internos de la aplicacion)
=> cambialo (p.e.) a "datos" (obviamente SIN las comillas dobles)

2) la formula que expones tiene dos (o tres) "inconvenientes"...
a) NO debes definir la formula delimitandola entre comillas dobles (de lo contrario es un simple texto)
b) le hace falta un parentesis de cierre (al final de la formula debe haber DOS parentesis)
c) si tu excel NO es en ingles... cambiar las funciones offset->desref y counta->contara

si asumimos excel en espanol, la formula debiera ser la siguiente:
=desref(data!$a$1,,,contara(data!$a:$a),contara(data!$1:$1))

(obviando que mi separador de argumentos es la coma)

si cualquier duda... comentas ?
saludos,
hector.
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida