Adatta alla dimensione della cella

Creare una macro - Scrivere uno script - Usare le API
Rispondi
epico
Messaggi: 58
Iscritto il: mercoledì 4 giugno 2014, 11:53

Adatta alla dimensione della cella

Messaggio da epico »

Salve,
partendo da questo codice
inserisce data-ora

Codice: Seleziona tutto

sub setCellTime 
rem - inserisce data-ora
Dim oCell as object 
oCell = thisComponent.getCurrentSelection 
strTime = cStr(Now()) 
oCell.FormulaLocal = strTime 

End Sub
e facendo delle prove con il registratore sono riuscito a inserire "a capo automatico"

Codice: Seleziona tutto

sub setCellTime 
rem - inserisce data-ora
Dim oCell as object 
dim document   as object
dim dispatcher as object
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
oCell = thisComponent.getCurrentSelection 
strTime = cStr(Now()) 
oCell.FormulaLocal = strTime 

rem - a capo automatico
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "WrapText"
args1(0).Value = true

dispatcher.executeDispatch(document, ".uno:WrapText", "", 0, args1())

End Sub
La mia richiesta (di cui il registratore non me lo fà, e non ho trovato informazioni ) è inserire la
data-ora con la formattazione della cella "adatta alla dimensione della cella".

"a capo automatico" è solo una prova, che non mi serve.

Grazie
OpenOffice 4.1 su Win10
patel
Volontario attivo
Volontario attivo
Messaggi: 4030
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Adatta alla dimensione della cella

Messaggio da patel »

non ho capito l'obiettivo pratico, comunque via macro è più semplice scegliere la dimensione del carattere e adattare la larghezza della cella
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
epico
Messaggi: 58
Iscritto il: mercoledì 4 giugno 2014, 11:53

Re: Adatta alla dimensione della cella

Messaggio da epico »

patel ha scritto:non ho capito l'obiettivo pratico
curiosità
patel ha scritto:via macro è più semplice scegliere la dimensione del carattere e adattare la larghezza della cella
così

Codice: Seleziona tutto

sub setCellTime 
rem - inserisce data-ora
Dim oCell as object 
dim document   as object
dim dispatcher as object
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
oCell = thisComponent.getCurrentSelection 
strTime = cStr(Now()) 
oCell.FormulaLocal = strTime 

rem - cambia dimensione carattere
dim args1(2) as new com.sun.star.beans.PropertyValue
args1(0).Name = "FontHeight.Height"
args1(0).Value = 7
args1(1).Name = "FontHeight.Prop"
args1(1).Value = 100
args1(2).Name = "FontHeight.Diff"
args1(2).Value = 0

dispatcher.executeDispatch(document, ".uno:FontHeight", "", 0, args1())

end sub
non volevo variare la larghezza della cella
OpenOffice 4.1 su Win10
patel
Volontario attivo
Volontario attivo
Messaggi: 4030
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Adatta alla dimensione della cella

Messaggio da patel »

allora devi:
1- misurare la larghezza della cella
2- impostare una dimensione del carattere
3- adattare la cella
4- la nuova dimensione è quella desiderata ?
5- cambi la dimensione del carattere e prosegui il loop
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
epico
Messaggi: 58
Iscritto il: mercoledì 4 giugno 2014, 11:53

Re: Adatta alla dimensione della cella

Messaggio da epico »

Grazie per le indicazioni, ma per il momento rimangono nel cassetto;
se hai notato il mio primo post viewtopic.php?f=16&t=5731
con le macro devo ancora imparare a usare la bici con le ruotine, mi limito a copiare, provare a capire
qualcosa e cercare di modificare secondo necessità.

GRAZIE in ogni caso per l'attenzione.
OpenOffice 4.1 su Win10
patel
Volontario attivo
Volontario attivo
Messaggi: 4030
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Adatta alla dimensione della cella

Messaggio da patel »

prova questa

Codice: Seleziona tutto

sub autochar
Dim oColumns as Object
sh = ThisComponent.Sheets(0)
oCell = sh.getCellRangeByName("A1") ' <<<< da modificare
col = ocell.cellAddress.Column
oColumns = Sh.getColumns()
cellw = oCell.Size.Width
fontH = oCell.CharHeight
do until cellw1 >= cellw
  fontH = fontH + 1
  oCell.CharHeight = fontH
  oColumns.getByIndex(col).setPropertyValue("OptimalWidth", True)
  cellw1 = oCell.Size.Width  
loop
end sub
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
epico
Messaggi: 58
Iscritto il: mercoledì 4 giugno 2014, 11:53

Re: Adatta alla dimensione della cella

Messaggio da epico »

Si ok, allarga la colonna alla larghezza ottimale del carattere inserito;
questo si riesce anche con il registratore

Codice: Seleziona tutto

sub larghezzaOttimale
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "aExtraWidth"
args1(0).Value = 200

dispatcher.executeDispatch(document, ".uno:SetOptimalColumnWidth", "", 0, args1())

end sub
adattato alla data-ora

Codice: Seleziona tutto

sub setCellTime 
rem - inserisce data-ora
Dim oCell as object 
dim document   as object
dim dispatcher as object
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
oCell = thisComponent.getCurrentSelection  'selezione corrente della cella
strTime = cStr(Now()) 
oCell.FormulaLocal = strTime 

rem - larghezza ottimale colonna
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "aExtraWidth"
args1(0).Value = 200

dispatcher.executeDispatch(document, ".uno:SetOptimalColumnWidth", "", 0, args1())

End Sub
ma non è la mia richiesta iniziale,
[inserire la data-ora con la formattazione della cella "adatta alla dimensione della cella" senza
variare la larghezza della cella.]
Se non c'è un'opzione specifica non ci perdere ulteriore tempo.

Grazie lo stesso
OpenOffice 4.1 su Win10
patel
Volontario attivo
Volontario attivo
Messaggi: 4030
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Adatta alla dimensione della cella

Messaggio da patel »

invece fa proprio quello che hai chiesto, tu stabilisci la larghezza della cella è il codice adatta il font di conseguenza a tentativi come ti avevo spiegato.
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
epico
Messaggi: 58
Iscritto il: mercoledì 4 giugno 2014, 11:53

Re: Adatta alla dimensione della cella

Messaggio da epico »

patel ha scritto: tu stabilisci la larghezza della cella
Non riesco a seguirti, nella prova che ho fatto varia il carattere e la larghezza cella
( io avevo chiesto la cella corrente, senza variare la larghezza)
Allegati
Larghezza1.ods
(10.86 KiB) Scaricato 135 volte
OpenOffice 4.1 su Win10
patel
Volontario attivo
Volontario attivo
Messaggi: 4030
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Adatta alla dimensione della cella

Messaggio da patel »

Non c'è una funzione che adatta la dimensione del carattere alla cella, quindi per farlo occorre trovare la dimensione a tentativi, si legge la larghezza della cella, si aumenta la dim del font e si adatta la cella, si ripete l'operazione fino a che la larghezza della cella torna quella iniziale.
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
epico
Messaggi: 58
Iscritto il: mercoledì 4 giugno 2014, 11:53

Re: Adatta alla dimensione della cella

Messaggio da epico »

patel ha scritto:Non c'è una funzione che adatta la dimensione del carattere alla cella, ... ripete l'operazione fino a che la larghezza della cella torna quella iniziale.
:crazy:
era solo una curiosità, per il momento debbo abbandonare vai troppo forte, prima devo imparare andare avanti con le ruotine ...

Scusa se ti faccio perdere tempo :super:
OpenOffice 4.1 su Win10
patel
Volontario attivo
Volontario attivo
Messaggi: 4030
Iscritto il: venerdì 30 aprile 2010, 8:04
Località: Livorno

Re: Adatta alla dimensione della cella

Messaggio da patel »

non è tempo perso, non avevo mai affrontato un problema del genere, ora sì :super:
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
Rispondi