OO-Snippets: Toggle automatic calculation of spreadsheets

Commons

Keywordsautomatic, calculation
LanguageooRexx
ApplicationCalc
AuthorsJosef Frysak (initial)
Supported Versions2.4.1  
Supported OSAll  
QuestionHow to activate and deactivate the automatic calculation?
Answer

Every spreadsheet document also inherits an "XCalculatable" interface.

This interface contains the "isAutomaticCalculationEnabled" function to

get the state of the automatic calculateion and the

"enableAutomaticCalculation" method to turn it on and off.

For further details see http://wi.wu-wien.ac.at/rgf/diplomarbeiten/BakkStuff/2008/200809_Frysak/200809_Frysak_Automating_OOo_ooRexx_Nutshells.pdf.

Code-Snippet-Listing (snippet-source)

-- try to get a script context, will be .nil, if script was not invoked by OOo
x_ScriptContext = uno.getScriptContext()
if (x_ScriptContext <> .nil) then
do
   -- invoked by OOo as a macro

   -- get context
   x_ComponentContext = x_ScriptContext~getComponentContext
   -- get desktop (an XDesktop)
   x_Desktop  = x_ScriptContext~getDesktop
   -- get current document
   x_Document = x_ScriptContext~getDocument
end
else  
do
   -- called from outside of OOo, create a connection

   -- connect to Open Office and get component context
   x_ComponentContext = UNO.connect()
   -- create a desktop service and its interface
   service = "com.sun.star.frame.Desktop"
   s_Desktop = x_ComponentContext~getServiceManager~XMultiServiceFactory~createInstance(service)
   x_Desktop = s_Desktop~XDesktop
   -- get the last active document
   x_Document = x_Desktop~getCurrentComponent()  
end




-- generate interface to automatic calculation entry
x_Calculatable = x_Document~XCalculatable

-- if Calculation is enabled - disable it, else enable it
if x_Calculatable~isAutomaticCalculationEnabled()
then x_Calculatable~enableAutomaticCalculation(.false)
else x_Calculatable~enableAutomaticCalculation(.true)

::requires UNO.CLS

Changelog

DateUserModification
2008-10-121Initial version

and