Macro per leggere lo stile di cella.

Creare una macro - Scrivere uno script - Usare le API
Rispondi
LiePhate
Messaggi: 5
Iscritto il: sabato 6 ottobre 2012, 11:41

Macro per leggere lo stile di cella.

Messaggio da LiePhate »

Ciao a tutti, qualcuno mi sa dire se è possibile leggere lo stile di cella da macro?
Mi spiego con la formattazione condizionata ho colorato di rosso le celle che individuano i sabati e le domeniche del mese, ora, vorrei riempire, con una macro, i giorni feriali con (8), le ore giornaliere, per fare ciò credevo bastasse leggere lo sfondo della cella con ".CellBackColor" ma non è così perché questa proprietà risulta essere a (-1) per tutte le celle anche quelle bianche. questo mi ha spiazzato e non so come risolvere il problema.

OpenOffice 4.1.4 su window 10.
OpenOffice 3.3 su windows XP
Avatar utente
unlucky83
Volontario
Volontario
Messaggi: 2355
Iscritto il: lunedì 7 gennaio 2013, 1:23
Località: Latina

Re: Macro per leggere lo stile di cella.

Messaggio da unlucky83 »

Devi leggere la formattazione condizionata della cella, la prorietà .CellBackColor si riferisce al colore di sfondo assegnato con sfondo cella. Ti consiglio di cercare xraytool che è un ottimo strumento per visionare tutte le proprietà, i servizi e le interfacce di un oggetto basic
LibO:Versione: 6.2.8.2
Build ID: 1:6.2.8~rc2-0ubuntu0.16.04.1- 32-bit
-
Se risolvi:
1. Condividi la soluzione qui con noi
2. Metti [Risolto] al titolo del primo messaggio come spiegato qui
Avatar utente
unlucky83
Volontario
Volontario
Messaggi: 2355
Iscritto il: lunedì 7 gennaio 2013, 1:23
Località: Latina

Re: Macro per leggere lo stile di cella.

Messaggio da unlucky83 »

.ConditionalFormat.getbyindex(0) ti permette di leggere le proprietà della formattazione condizionata. Ma non permette di ricavare il risultato "vero" della formula impiegata nella formattazione condizionata, permette di leggere lo stile applicato. Francamente è un'informazione inutile.
Io ti suggerirei di eliminare la formattazione condizionata e impiegare la formula direttamente da macro per settare .CellBackColor, oppure applicare la formattazione condizionata anche per i giorni feriali.
LibO:Versione: 6.2.8.2
Build ID: 1:6.2.8~rc2-0ubuntu0.16.04.1- 32-bit
-
Se risolvi:
1. Condividi la soluzione qui con noi
2. Metti [Risolto] al titolo del primo messaggio come spiegato qui
LiePhate
Messaggi: 5
Iscritto il: sabato 6 ottobre 2012, 11:41

Re: Macro per leggere lo stile di cella.

Messaggio da LiePhate »

Innanzi tutto unlucky83 grazie per le risposte, non ho risposto prima perché avevo il pc in assistenza e temo che lunedi lo dovrò riportare.
Per quel che riguarda XraiTool ho dato un occhiata ma non ci ho capito tanto, .ConditionalFormat.getByIndex(0) dici che mi permette di leggere lo style applicato.
Io Ho fatto così -
Dim MyStyle as string
oDoc = ThisComponent
oSheet = oDoc.sheets(0)
For q = 5 to 36
oCell = oSheet.getCellByPosition(ColR, Riga + q)
MyStyle = oCell.ConditionalFormat.getByIndex(0)
Forse non ho capito come si usa perché mi da errore " Valore della proprietà errato". Con la formattazione condizionata applico lo style "Rosso" alla cella quindi se riesco a leggere il nome dello style dovrebbe essere sufficiente, mi potresti scrivere la sitassi esatta cosi la provo?
OpenOffice 3.3 su windows XP
Avatar utente
unlucky83
Volontario
Volontario
Messaggi: 2355
Iscritto il: lunedì 7 gennaio 2013, 1:23
Località: Latina

Re: Macro per leggere lo stile di cella.

Messaggio da unlucky83 »

Ma il punto è che con la sintassi esatta leggi il nome dello stile, quindi “Rosso” sia se la condizione della formattazione condizionata è vera sia se è falsa. Ti basta comunque questo?

Codice: Seleziona tutto

Sub Main
oDoc = ThisComponent
oSheet = oDoc.sheets(0)
For i=0 To 1
oCell = oSheet.getCellByPosition(0, i)
'xray oCell
If oCell.ConditionalFormat.Count>0 then
MyStyle = oCell.ConditionalFormat.getByIndex(0).StyleName
msgbox MyStyle
End if
next
End Sub
Se la cella ha più formattazioni condizionate dovresti inserire un ulteriore ciclo perchè non è detto che sia 0 "l'index" che ti interessa
Se hai installato le macro di xraytool, per usarlo basta che carichi la sua libreria e poi esgui "xray oCell". ti si apre una pratica finestra di dialogo che ti da tutte le proprietà , i metodi, le interfacce e i servizi dell'oggetto
LibO:Versione: 6.2.8.2
Build ID: 1:6.2.8~rc2-0ubuntu0.16.04.1- 32-bit
-
Se risolvi:
1. Condividi la soluzione qui con noi
2. Metti [Risolto] al titolo del primo messaggio come spiegato qui
LiePhate
Messaggi: 5
Iscritto il: sabato 6 ottobre 2012, 11:41

Re: Macro per leggere lo stile di cella.

Messaggio da LiePhate »

Non sapevo che lo style cella venisse applicato comunque pensavo che fosse applicato soltanto nel caso in cui la condizione fosse vera. Ora vedo se riesco a farlo inserendo la formula in una macro settando .CellBackColor come mi hai consigliato, praticamente devo rifare tutto. Prima però faccio un tentativo con XraiTool. Per il momento grazie, appena ho sviluppi ti faccio sapere.
OpenOffice 3.3 su windows XP
Rispondi