Macro no funciona en Excel 2007 - dirección dinámica

Con todos!

Espero puedan darme una ayuda con la consulta:
La macro desarrollada funciona al 100% en Excel 2010 pero no en Excel 2007, dado que no reconoce la creación de variables con SET aparentemente. Explico:

La idea es que se cree una tabla dinámica a partir de un reporte plano, pero como es lógico estos reportes que son diarios, no siempre tendrán la misma cantidad de filas pero si tendrían el mismo ancho y lugar de datos, por lo que el problema es establecer una dirección dinámica para la creación de la tabla dinámica.
Establezco una dirección dinámica con Set PRange. Esto funciona sin problema alguno en Excel 2010 pero no para la versión 2007. ¿Existe una variante donde pueda funcionar para la 2007 también? - ¿Qué ademas via Case pueda detectar la versión de excel del usuario y asi funcione para ambas versiones?.

Para ello, la parte del código problema es el siguiente:
'Definir el área de entrada y establecer un caché dinámico (PRange)
Sheets(1).Select
Set WSD2 = Sheets(1)
FinalRow = WSD2.Cells(Rows.Count, 1).End(xlUp).Row
Set PRange = WSD2.Cells(1, 1).Resize(FinalRow, 18)
'Adiciono TD con parámetros establecidos
Sheets.Add
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:=
PRange, Version:=xlPivotTableVersion14).CreatePivotTable TableDestination:="Hoja2!R3C1", TableName:="Tabla dinámica", DefaultVersion:=xlPivotTableVersion14

Espero puedan darme una pista de como solucionar este inconveniente..
Saludos,
msoftperu

1 Respuesta

Respuesta
1

El problema no es el Set PRange, si no la versión de excel.

Anexé la verificación de la versión para crear la tabla.

Sub tabla()
Sheets(1).Select
Set WSD2 = Sheets(1)
FinalRow = WSD2.Cells(Rows.Count, 1).End(xlUp).Row
Set PRange = WSD2.Cells(1, 1).Resize(FinalRow, 18)
ver = Application.Version
Select Case ver
    Case "14.0": PTV = xlPivotTableVersion14 'Versión 2010
    Case "12.0": PTV = xlPivotTableVersion12 'Versión 2007
    Case "11.0": PTV = xlPivotTableVersion10 'Versión 2003
End Select
'Adiciono TD con parámetros establecidos
Sheets.Add
    ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, _
        SourceData:=PRange, _
        Version:=PTV).CreatePivotTable _
        TableDestination:="Hoja2!R3C1", _
        TableName:="Tabla dinámica", _
        DefaultVersion:=PTV
End Sub

También tienes este detalle en tu macro:

TableDestination:="Hoja2!R3C1"

Estas creando una hoja, pero el destino de la tabla siempre es la "Hoja2", en la versión 2007, si ya tienes una tabla llamada "Tabla dinámica", y vuelves a ejecutar la macro, te va a marcar un error, porque la tabla ya existe.

Si quieres que la tabla quede en la hoja2, intenta con la siguiente:

Sub tabla()
Sheets(1).Select
Set WSD2 = Sheets(1)
FinalRow = WSD2.Cells(Rows.Count, 1).End(xlUp).Row
Set PRange = WSD2.Cells(1, 1).Resize(FinalRow, 18)
ver = Application.Version
Select Case ver
    Case "14.0": PTV = xlPivotTableVersion14 'Versión 2010
    Case "12.0": PTV = xlPivotTableVersion12 'Versión 2007
    Case "11.0": PTV = xlPivotTableVersion10 'Versión 2003
End Select
'Adiciono TD con parámetros establecidos
'Sheets.Add
Sheets("Hoja2").Cells.Clear
    ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, _
        SourceData:=PRange, _
        Version:=PTV).CreatePivotTable _
        TableDestination:="Hoja2!R3C1", _
        TableName:="Tabla dinámica", _
        DefaultVersion:=PTV
End Sub

Saludos.DAM
Si es lo que necesitas.

Estimado amigo experto DAM

Sin tu ayuda jamás podría haber llegado a tal código y es que siempre hay algo que aprender o mejor dicho nunca terminaremos de hacerlo. Me he quedado sorprendido y estoy como dicen... habido por saber más.

Muchas gracias por la atención y profesionalismo que le pones a las respuestas. Estoy muy pero muy agradecido.

Cualquier consejo de tu parte de como aprender más, ya sea por un curso o manual (libro) lo agradeceré muchísimo.

Saludos cordiales desde Perú.

msoftperu

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas