El 28 de octubre de 2009 11:33, Gabriel Germán Salas <[email protected]
> escribió:

>
> Si, sucede que es muy incómodo cambiar el rango de datos para cada uno,
> más aún porque deseo proteger as hojas por seguridad ante errores.
>
> Encontré que se detectó un error en OOo que entiendo es el causante de
> mi problema, pero no se como solucionarlo.
>
> http://www.openoffice.org/issues/show_bug.cgi?id=29848
>
>
>
Parece que tendrá solución hasta la versión 3.3, como supongo que no puedes
esperar, prueba la siguiente macro que te actualiza TODOS los rangos de
TODOS los gráficos de tu hoja activa a dicha hoja activa.

Option Explicit

Sub ActualizarHoja()
Dim oHojaActiva As Object
Dim oCelda As Object
Dim oGraficos As Object
Dim oGrafico As Object
Dim co1 As Integer, co2 As Integer
Dim mRangos()

    'La hoja activa, donde estan los gráficos
    oHojaActiva = ThisComponent.getCurrentController.getActiveSheet()
    'Referencia a la celda A1, puede ser cualquier celda
    oCelda = oHojaActiva.getCellByPosition(0,0)
    'Todos los gráficos de la hoja activa
    oGraficos = oHojaActiva.getCharts()
    'Iteramos en cada uno
    For co1 = 0 To oGraficos.getCount() -1
        'Accedemos a cada gráfico
        oGrafico = oGraficos.getByIndex(co1)
        'Los rangos de datos del gráfico
        mRangos = oGrafico.getRanges()
        'Iteramos en cada rango
        For co2 = LBound(mRangos) To UBound(mRangos)
            'Reemplazamos la hoja por la hoja actual, es decir la activa
            mRangos(co2).Sheet = oCelda.getCellAddress.Sheet
        Next
        'Reinsertamos los rangos de datos
        oGrafico.setRanges(mRangos)
    Next
End Sub

Saludos

Mauricio

P.D. Te envío a tu correo el archivo donde hice las pruebas


-- 
_______________________________
Todo lo que no es dado es perdido

Responder a