Pannello di Controllo Moderatore ]

[Risolto] Selezione di celle non contigue in Calc

Creare una macro - Scrivere uno script - Usare le API

[Risolto] Selezione di celle non contigue in Calc

Messaggioda giuserpe » lunedì 20 agosto 2018, 1:53

Ciao,
solitamente, per alcune operazioni, uso selezionare un range di celle con questo sistema
Codice: Seleziona tutto   Espandi visualeStringi visuale
ThisComponent.CurrentController.select(oRange)

Com'è possibile effettuare la selezione di celle non contigue?
Grazie
Ultima modifica di giuserpe il martedì 21 agosto 2018, 11:43, modificato 1 volta in totale.
LibreOffice 6.* su Windows e Linux
Avatar utente
giuserpe
 
Messaggi: 105
Iscritto il: mercoledì 23 aprile 2014, 12:53

Re: Selezione di celle non contigue in Calc

Messaggioda patel » lunedì 20 agosto 2018, 19:12

Perché le vuoi selezionare ? cosa ci vuoi fare dopo ?
-------------------
OpenOffice 4.1 e Libre Office 6.o.7.3 su Windows 10
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
patel
Volontario attivo
Volontario attivo
 
Messaggi: 3283
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Selezione di celle non contigue in Calc

Messaggioda giuserpe » martedì 21 agosto 2018, 8:10

La mia intenzione è copiarle in un altro foglio. Ho già pronto l'occorrente per farlo e ci riesco con selezioni standard. Qui di seguito hai i due script in Python che utilizzo. Ovviamente ne servono altri che non metto qui per brevità, ma se lo ritieni necessario posso mostrarteli.

Codice: Seleziona tutto   Espandi visualeStringi visuale
def copy_clip(arg=None):
    oDoc = XSCRIPTCONTEXT.getDocument()
    oSheet = oDoc.CurrentController.ActiveSheet
    ctx = XSCRIPTCONTEXT.getComponentContext()
    desktop = XSCRIPTCONTEXT.getDesktop()
    oFrame = desktop.getCurrentFrame()

    dispatchHelper = ctx.ServiceManager.createInstanceWithContext( 'com.sun.star.frame.DispatchHelper', ctx )
    dispatchHelper.executeDispatch(oFrame, ".uno:Copy", "", 0, list())
########################################################################
def paste_clip(arg=None):
    oDoc = XSCRIPTCONTEXT.getDocument()
    oSheet = oDoc.CurrentController.ActiveSheet
    ctx = XSCRIPTCONTEXT.getComponentContext()
    desktop = XSCRIPTCONTEXT.getDesktop()
    oFrame = desktop.getCurrentFrame()

    dispatchHelper = ctx.ServiceManager.createInstanceWithContext( 'com.sun.star.frame.DispatchHelper', ctx )
    dispatchHelper.executeDispatch(oFrame, ".uno:Paste", "", 0, list())
    oDoc.CurrentController.select(oDoc.createInstance("com.sun.star.sheet.SheetCellRanges")) #'unselect
LibreOffice 6.* su Windows e Linux
Avatar utente
giuserpe
 
Messaggi: 105
Iscritto il: mercoledì 23 aprile 2014, 12:53

Re: Selezione di celle non contigue in Calc

Messaggioda hubert lambert » martedì 21 agosto 2018, 8:43

Ciao giuserpe,

Ecco un esempio:
Codice: Seleziona tutto   Espandi visualeStringi visuale
    doc = XSCRIPTCONTEXT.getDocument()
    ranges = doc.createInstance("com.sun.star.sheet.SheetCellRanges")
    range1 = doc.Sheets.getCellRangeByPosition(0,0,0,9,0).RangeAddress  # -> Foglio1.D1:A10
    range2 = doc.Sheets.getCellRangeByPosition(3,0,3,9,0).RangeAddress  # -> Foglio1.D1:A10
    ranges.addRangeAddresses((range1, range2), True)
    doc.CurrentController.select(ranges)

Saluti.
OpenOffice 4.1.2/4.1.4 | LibreOffice 5.4.4/6.0
Win7 + LinuxMint
hubert lambert
Volontario
Volontario
 
Messaggi: 144
Iscritto il: venerdì 9 giugno 2017, 13:48

Re: Selezione di celle non contigue in Calc

Messaggioda giuserpe » martedì 21 agosto 2018, 11:42

Grazie mille,
come al solito siete preziosissimi.
LibreOffice 6.* su Windows e Linux
Avatar utente
giuserpe
 
Messaggi: 105
Iscritto il: mercoledì 23 aprile 2014, 12:53

Re: [Risolto] Selezione di celle non contigue in Calc

Messaggioda patel » martedì 21 agosto 2018, 13:01

Ciao Hubert, hai anche una versione basic ?
la riga ranges.addRangeAddresses((range1, range2), True) mi da errore
-------------------
OpenOffice 4.1 e Libre Office 6.o.7.3 su Windows 10
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
patel
Volontario attivo
Volontario attivo
 
Messaggi: 3283
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: [Risolto] Selezione di celle non contigue in Calc

Messaggioda hubert lambert » martedì 21 agosto 2018, 14:23

Ciao patel,

In python, (range1, range2) (che si chiama un "tuple") è l'equivalente del basic array(range1, range2).
Cordiali saluti ;) .
OpenOffice 4.1.2/4.1.4 | LibreOffice 5.4.4/6.0
Win7 + LinuxMint
hubert lambert
Volontario
Volontario
 
Messaggi: 144
Iscritto il: venerdì 9 giugno 2017, 13:48


Torna a Macro e UNO API

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite