MACRO TABLA DINAMICA

21/12/2005 - 20:41 por Marvin | Informe spam
Que tal grupo,

Como puedo indicar dentro de una instrcción de una macro para la creación de
una TABLA DINAMICA que mi rango de datos es variable

El numero de filas que deseo pasar a una tabla dinamica nunca son iguales,
los campos si, como puedo especificar dentro del codigo para la tabla que
tome los datos hasta donde existan. ME EXPLICO??, este es mi codigo

ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
"Hoja1!R1C1:R1359C17").CreatePivotTable TableDestination:="",
TableName:= _
"Tabla dinámica3", DefaultVersion:=xlPivotTableVersion10
ActiveSheet.PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1)
ActiveSheet.Cells(3, 1).Select
With ActiveSheet.PivotTables("Tabla dinámica3").PivotFields("compañía")
.Orientation = xlRowField
.Position = 1
End With
ActiveSheet.PivotTables("Tabla dinámica3").AddDataField
ActiveSheet.PivotTables _
("Tabla dinámica3").PivotFields("SRINT"), "Suma de SRINT", xlSum

EL RANGO QUE ESTA TOMANDO ES FIJO, COMO PUEDO REEMPLAZAR ESTE RANGO POR UNO
QUE TOME EL RANGO QUE SEA

..."Hoja1!R1C1:R1359C17")...

GRACIAS

Preguntas similare

Leer las respuestas

#1 KL
21/12/2005 - 21:54 | Informe spam
Hola Marvin,

No he hecho pruebas con el codigo que te pongo abajo (me ha dado pereza a la hora de reconstruir la tabla), pero igual te funciona y
si no, te dara las pistas necesarias :-)

Saludos,
KL


Sub test()
Dim miRango As String, NombreTD As String
NombreTD = "Tabla dinámica3"
With ActiveWorkbook
With .Worksheets("Hoja1")
miRango = .Range(.Cells(1, 1), _
.Cells(.Rows.Count, 1).End(xlUp)).Resize(, 17) _
.Address(, , , True)
End With
.PivotCaches.Add(xlDatabase, miRango) _
.CreatePivotTable _
TableDestination:=ActiveSheet.Cells(3, 1), _
TableName:=NombreTD

With .ActiveSheet
With .PivotTables(NombreTD).PivotFields("compañía")
.Orientation = xlRowField
.Position = 1
.AddDataField _
.PivotFields ("SRINT"), _
"Suma de SRINT", _
xlSum
End With
End With
End With
End Sub
Respuesta Responder a este mensaje
#2 Marvin
22/12/2005 - 01:25 | Informe spam
EN EFECTO, MARCA UN ERROR EN EL RANGO A CONSIDERAR...

"ESTE COMANDO REQUIERE AL MENOS DOS FILAS DE DATOS. NO PUEDE USAR UNA
SELECCION CON UNA UNICA FILA."...

TIENES IDEA COMO PODEMOS RESOLVERLO. GRCS

"KL" escribió:

Hola Marvin,

No he hecho pruebas con el codigo que te pongo abajo (me ha dado pereza a la hora de reconstruir la tabla), pero igual te funciona y
si no, te dara las pistas necesarias :-)

Saludos,
KL


Sub test()
Dim miRango As String, NombreTD As String
NombreTD = "Tabla dinámica3"
With ActiveWorkbook
With .Worksheets("Hoja1")
miRango = .Range(.Cells(1, 1), _
.Cells(.Rows.Count, 1).End(xlUp)).Resize(, 17) _
.Address(, , , True)
End With
.PivotCaches.Add(xlDatabase, miRango) _
.CreatePivotTable _
TableDestination:=ActiveSheet.Cells(3, 1), _
TableName:=NombreTD

With .ActiveSheet
With .PivotTables(NombreTD).PivotFields("compañía")
.Orientation = xlRowField
.Position = 1
.AddDataField _
.PivotFields ("SRINT"), _
"Suma de SRINT", _
xlSum
End With
End With
End With
End Sub


Respuesta Responder a este mensaje
#3 KL
22/12/2005 - 01:46 | Informe spam
Hola Marvin,

Esto querra decir que en la columna [A] de la Hoja1 del libro activo no tienes datos. Tu codigo sugeria que tenias la base de datos
en [A1:Q1359] por lo que asumi que la columna [A] no estaria vacia. Si no es asi cambia el nimero de columna en la linea 6 del
codigo (".Cells(.Rows.Count, 1).End(xlUp)).Resize(, 17) _") por el de una columna no puede tener celdas vacias, p.ej.:
.Cells(.Rows.Count, 5).End(xlUp)).Resize(, 17) _.

Si no existe tal columna en tu BD prueba usando la propiedad UsedRange, p.ej.:

Sub test()
Dim miRango As String, NombreTD As String
NombreTD = "Tabla dinámica3"
With ActiveWorkbook
With .Worksheets("Hoja1")
miRango = .UsedRange _
.Address(, , , True)

Y si la columna [A] en realidad si que esta llena, comprueba que el nombre de hoja sea correcto y que el libro que contiene esa hoja
realmente esta activo en el momento de ejecutar el codigo.

Saludos,
KL


"Marvin" wrote in message news:
EN EFECTO, MARCA UN ERROR EN EL RANGO A CONSIDERAR...

"ESTE COMANDO REQUIERE AL MENOS DOS FILAS DE DATOS. NO PUEDE USAR UNA
SELECCION CON UNA UNICA FILA."...

TIENES IDEA COMO PODEMOS RESOLVERLO. GRCS

"KL" escribió:

Hola Marvin,

No he hecho pruebas con el codigo que te pongo abajo (me ha dado pereza a la hora de reconstruir la tabla), pero igual te
funciona y
si no, te dara las pistas necesarias :-)

Saludos,
KL


Sub test()
Dim miRango As String, NombreTD As String
NombreTD = "Tabla dinámica3"
With ActiveWorkbook
With .Worksheets("Hoja1")
miRango = .Range(.Cells(1, 1), _
.Cells(.Rows.Count, 1).End(xlUp)).Resize(, 17) _
.Address(, , , True)
End With
.PivotCaches.Add(xlDatabase, miRango) _
.CreatePivotTable _
TableDestination:=ActiveSheet.Cells(3, 1), _
TableName:=NombreTD

With .ActiveSheet
With .PivotTables(NombreTD).PivotFields("compañía")
.Orientation = xlRowField
.Position = 1
.AddDataField _
.PivotFields ("SRINT"), _
"Suma de SRINT", _
xlSum
End With
End With
End With
End Sub


Respuesta Responder a este mensaje
#4 KL
22/12/2005 - 12:36 | Informe spam
Otra forma podria ser usando la propiedad CurrentRegion:

Sub test()
Dim miRango As String, NombreTD As String
NombreTD = "Tabla dinámica3"
With ActiveWorkbook
With .Worksheets("Hoja1")
miRango = .Range("A1").CurrentRegion _
.Address(, , , True)

...aqui va el resto del codigo

Saludos,
KL


"KL" wrote in message news:
Hola Marvin,

Esto querra decir que en la columna [A] de la Hoja1 del libro activo no tienes datos. Tu codigo sugeria que tenias la base de
datos en [A1:Q1359] por lo que asumi que la columna [A] no estaria vacia. Si no es asi cambia el nimero de columna en la linea 6
del codigo (".Cells(.Rows.Count, 1).End(xlUp)).Resize(, 17) _") por el de una columna no puede tener celdas vacias, p.ej.:
.Cells(.Rows.Count, 5).End(xlUp)).Resize(, 17) _.

Si no existe tal columna en tu BD prueba usando la propiedad UsedRange, p.ej.:

Sub test()
Dim miRango As String, NombreTD As String
NombreTD = "Tabla dinámica3"
With ActiveWorkbook
With .Worksheets("Hoja1")
miRango = .UsedRange _
.Address(, , , True)

Y si la columna [A] en realidad si que esta llena, comprueba que el nombre de hoja sea correcto y que el libro que contiene esa
hoja realmente esta activo en el momento de ejecutar el codigo.

Saludos,
KL


"Marvin" wrote in message news:
EN EFECTO, MARCA UN ERROR EN EL RANGO A CONSIDERAR...

"ESTE COMANDO REQUIERE AL MENOS DOS FILAS DE DATOS. NO PUEDE USAR UNA
SELECCION CON UNA UNICA FILA."...

TIENES IDEA COMO PODEMOS RESOLVERLO. GRCS

"KL" escribió:

Hola Marvin,

No he hecho pruebas con el codigo que te pongo abajo (me ha dado pereza a la hora de reconstruir la tabla), pero igual te
funciona y
si no, te dara las pistas necesarias :-)

Saludos,
KL


Sub test()
Dim miRango As String, NombreTD As String
NombreTD = "Tabla dinámica3"
With ActiveWorkbook
With .Worksheets("Hoja1")
miRango = .Range(.Cells(1, 1), _
.Cells(.Rows.Count, 1).End(xlUp)).Resize(, 17) _
.Address(, , , True)
End With
.PivotCaches.Add(xlDatabase, miRango) _
.CreatePivotTable _
TableDestination:=ActiveSheet.Cells(3, 1), _
TableName:=NombreTD

With .ActiveSheet
With .PivotTables(NombreTD).PivotFields("compañía")
.Orientation = xlRowField
.Position = 1
.AddDataField _
.PivotFields ("SRINT"), _
"Suma de SRINT", _
xlSum
End With
End With
End With
End Sub







email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida