terça-feira, 10 de março de 2009

Macro para actualizar tabelas dinâmicas no CALC do OpenOffice

Nem de propósito, mal tínhamos completado o artigo anterior, descobrimos a macro necessária para actualizar automaticamente todas as tabelas dinâmicas de uma folha de cálculo do CALC (só em inglês conseguimos encontrar)

Pedindo desculpa por não saber a autoria, ela aí fica:

REM ***** BASIC *****
Sub refresh_DBRanges_And_Pilots
REM disable auto-calculation:
bAutoCalc = thisComponent.IsAutomaticCalculationEnabled
thisComponent.enableAutomaticCalculation(False)
oDBRangesEnum = thisComponent.DatabaseRanges.createEnumeration()
refresh_Enumeration(oDBRangesEnum)
oSheetsEnum = thisComponent.Sheets.createEnumeration()
refresh_All_DataPilots(oSheetsEnum)
REM reset auto-calculation to previous state:
thisComponent.enableAutomaticCalculation(bAutoCalc)
End Sub
Sub refresh_All_DataPilots(oSheetsEnum)
REM Bug: Disregards pilots created from datasource
while oSheetsEnum.hasMoreElements()
oSheet = oSheetsEnum.nextElement()
oDPEnum = oSheet.DataPilotTables.createEnumeration()
refresh_Enumeration(oDPEnum)
wend
End Sub
Sub refresh_Enumeration(oEnum)
while oEnum.hasMoreElements()
oNext = oEnum.nextElement()
oNext.refresh()
wend
End Sub


Para os que não sabem como utilizar macros, prometemos que voltaremos ao assunto.

Sem comentários:

Enviar um comentário