RangeSource para Pivot Table

16/08/2006 - 22:39 por Carlos Durán Urenda | Informe spam
Saludos a todos

tengo en VBA una variabel de tipo Range, de la cual deseo obtener el texto
correspondiente al range expresado en terminos de "Hoja1!L1C1:L50C15", para
asignarlo como origen de datos a un objeto pivot table

como puedo obtener la referencia del objeto range en terminos de LC?

o bien, como puedo hacer la asignacion del objeto range para que ese sea el
source del pivot table?

Gracias
Carlos Durán

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
17/08/2006 - 01:39 | Informe spam
hola, Carlos !

tengo en VBA una variabel de tipo Range, de la cual deseo obtener el texto correspondiente al range
expresado en terminos de "Hoja1!L1C1:L50C15", para asignarlo como origen de datos a un objeto pivot table
como puedo obtener la referencia del objeto range en terminos de LC?
o bien, como puedo hacer la asignacion del objeto range para que ese sea el source del pivot table?



[creo que] te hace falta comentar dos [o mas] 'detalles' :)) [p.e.]
- quieres crear una tabla dinamica nueva ?
- quieres modificar el origen de datos de una TD existente ?
- quieres 'dejar' que el usuario defina el arreglo de la TD [nueva] ?
- ???

en tanto comentas los detalles 'pendientes'... el siguiente ejemplo [excel 2000 en adelante]...
prepara el rango de origen [de X hoja] como datos para una nueva TD [en una hoja nueva] PERO...
le deja la tarea al 'asistente' de definir que campos se ponen en cada area de la TD -?-

Sub Crear_TD()
Dim NuevaTabla As String
NuevaTabla = Worksheets("hoja1").Range("a1:d39").Address(External:=True)
ActiveWorkbook.PivotCaches.Add( _
SourceType:=xlDatabase, _
SourceData:=NuevaTabla).CreatePivotTable _
TableDestination:="", _
TableName:="TD prueba 1"
End Sub

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.
Respuesta Responder a este mensaje
#2 Carlos Durán Urenda
17/08/2006 - 17:10 | Informe spam
Gracias Hector

lo que intento es modificar una TD ya creada... hasta ahora lo que he hecho
es concatenar los valores devueltos con el objeto range para generar la
expresion que necesito...

Dim t as string
Dim PT as PivotTable

t = "Datos!L1C1:L" & r.Rows.Count & "C" & r.Columns.Count

PT.SourceData = t

pero me gustaria saber si exite otra forma de hacerlo

Gracias por todo



"Héctor Miguel" escribió en el mensaje
news:
hola, Carlos !

tengo en VBA una variabel de tipo Range, de la cual deseo obtener el
texto correspondiente al range
expresado en terminos de "Hoja1!L1C1:L50C15", para asignarlo como origen
de datos a un objeto pivot table
como puedo obtener la referencia del objeto range en terminos de LC?
o bien, como puedo hacer la asignacion del objeto range para que ese sea
el source del pivot table?



[creo que] te hace falta comentar dos [o mas] 'detalles' :)) [p.e.]
- quieres crear una tabla dinamica nueva ?
- quieres modificar el origen de datos de una TD existente ?
- quieres 'dejar' que el usuario defina el arreglo de la TD [nueva] ?
- ???

en tanto comentas los detalles 'pendientes'... el siguiente ejemplo [excel
2000 en adelante]...
prepara el rango de origen [de X hoja] como datos para una nueva TD [en
una hoja nueva] PERO...
le deja la tarea al 'asistente' de definir que campos se ponen en cada
area de la TD -?-

Sub Crear_TD()
Dim NuevaTabla As String
NuevaTabla = Worksheets("hoja1").Range("a1:d39").Address(External:=True)
ActiveWorkbook.PivotCaches.Add( _
SourceType:=xlDatabase, _
SourceData:=NuevaTabla).CreatePivotTable _
TableDestination:="", _
TableName:="TD prueba 1"
End Sub

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.

Respuesta Responder a este mensaje
#3 Héctor Miguel
18/08/2006 - 00:29 | Informe spam
hola, Carlos !

... intento... modificar una TD ya creada...
... lo que he hecho es concatenar los valores devueltos con el objeto range para generar la expresion que necesito...
Dim t as string
Dim PT as PivotTable
t = "Datos!L1C1:L" & r.Rows.Count & "C" & r.Columns.Count

PT.SourceData = t
pero me gustaria saber si exite otra forma de hacerlo



1) la siguiente expresion devuelve el texto 'concatenado' que necesitas:
t = Worksheets("datos").Range("a1:c54").Address(, , xlR1C1, True)
-> PERO... se incluye el nombre del libro entre corchetes... [Libro.xls]Datos!R1C1:R54C3

2) si el caso es que nombre_libro+nombre_hoja NO contienen espacios... prueba con la siguiente modificacion:
t = Worksheets("datos").Range("a1:c54").Address(, , xlR1C1, True)
t = Mid(t, InStr(t, "]") + 1)

3) si el caso es que SI existen espacios entre nombre_libro+nombre_hoja [hay que buscar el apostrofo ' +/- como sigue]
Dim t As String, Hoja As String, Rango As String
t = Worksheets("datos").Range("a1:c54").Address(, , xlR1C1, True)
If InStr(t, "'") Then
Hoja = Mid(t, InStr(t, "]") + 1, InStr(t, "!") - InStr(t, "]") - 2)
Rango = Mid(t, InStr(t, "!") + 1)
t = "'" & Hoja & "!'" & Rango
Else: t = Mid(t, InStr(t, "]") + 1)
End If
MsgBox t

[probablemente] habra algunas variantes/variaciones mas -?- [creo que con lo anterior sabrias por donde encontrarlas] :))

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida