Macros/Calc/py018
Jump to navigation
Jump to search
TDF LibreOffice Blog comunitari Weblate(traduci) Autori Nextcloud Redmine Ask LibreOffice | Donazione
Descrizione
Eseguite il dispatcher per inserire una formula (in realtà qualsiasi stringa) in una determinata cella
Codice Python
# codifica: utf-8
from __future__ import unicode_literals
import uno
from com.sun.star.beans import PropertyValue
def calcInsertStringToCell(*args ): # *args qui viene utilizzato solo quando questo modulo viene avviato da un pulsante del modulo
document = XSCRIPTCONTEXT.getDocument()
frame = document.getCurrentController().getFrame()
ctx = XSCRIPTCONTEXT.getComponentContext()
dispatcher = ctx.ServiceManager.createInstanceWithContext('com.sun.star.frame.DispatchHelper', ctx)
propVal = PropertyValue() # Costruttore predefinito
propVal.Name="ToPoint"
propVal.Value="$B$11" # La cella in cui inserire
properties=(propVal,) # Il parametro che passa in executeDispatch **deve** essere una tupla
dispatcher.executeDispatch(frame, ".uno:GoToCell", "", 0, properties) # Esegue il Dispatch
propVal.Name="StringName"
propVal.Value="=sum(B3:B10)" # Può essere qualsiasi stringa, qui vogliamo mettere la somma di B3:B10 in B11
properties=(propVal,)
dispatcher.executeDispatch(frame, ".uno:EnterString", "", 0, properties) # Esegue il Dispatch
# Extra: riempe automaticamente con lo stesso contenuto dalla cella corrente (B11) a D11
propVal.Name="EndCell"
propVal.Value="$D$11" # imposta EndCell del comando AutoFill su D11
properties=(propVal,)
dispatcher.executeDispatch(frame, ".uno:AutoFill", "", 0, properties)