Sto effettuando il porting di una macro Excel in OOo . La macro effettua la cancellazione dei dati di un'area di input per l'utente su un foglio di lavoro protetto che ha le celle dell'area di input sbloccate. Excel ricorda quale queste siano quando alla fine della macro di riprotegge il foglio. Calc invece riprotegge integralmente il foglio dopo l'istruzione:
.....
oSheet.Protect "pippo"
.....
Come posso dare di nuovo accesso all'utente all'area di input ( denominata "InputArea" ) senza sbloccare l'intero foglio?
Grazie
Elio Buonocore
[RISOLTO] macro sblocco celle su foglio protetto
-
- Messaggi: 12
- Iscritto il: martedì 10 agosto 2010, 9:51
[RISOLTO] macro sblocco celle su foglio protetto
Ultima modifica di Elio Buonocore il mercoledì 11 agosto 2010, 2:21, modificato 1 volta in totale.
Elio Buonocore OpenOffice 3.2 su Vista
Re: macro sblocco celle su foglio protetto
Selezioni la cella
dx mouse > formatta celle > Protezione celle
togli la spunta da "protetto"
in questo modo la cella resta digitabile anche se il foglio è protetto.
ciao
g
dx mouse > formatta celle > Protezione celle
togli la spunta da "protetto"
in questo modo la cella resta digitabile anche se il foglio è protetto.
ciao
g
Per cortesia, inserisci [Risolto] nel Titolo iniziale se il tuo problema è stato risolto.
-
Win 7 AOO4.1 + Ubuntu 14.04 AOO4.1 - Esci dall'illegalità: utilizza OpenOffice !
-
Win 7 AOO4.1 + Ubuntu 14.04 AOO4.1 - Esci dall'illegalità: utilizza OpenOffice !
-
- Messaggi: 12
- Iscritto il: martedì 10 agosto 2010, 9:51
Re: macro sblocco celle su foglio protetto
Ma questo lo avevo già sperimentato. Ciò che cerco di fare è replicare con una macro quello che è già possibile all'interfaccia utente. Purtroppo il seguente codice falliscere nello sbloccare le celle di InputArea. Si assume che il foglio1 sia protetto con password pippo e che le celle di InputArea siano sbloccate con i comandi dell'interfaccia utente:
Sub Prova
Dim rngClear As Object
Dim oSheet1 As Object
oSheet1 = ThisComponent.Sheets.GetByName("Foglio1")
oSheet1.Unprotect "pippo"
rngClear = oSheet1.GetCellRangeByName("InputArea")
rngClear.clearContents( _
com.sun.star.sheet.CellFlags.VALUE _
+ com.sun.star.sheet.CellFlags.STRING _
+ com.sun.star.sheet.CellFlags.DATETIME _
+ com.sun.star.sheet.CellFlags.ANNOTATION _
+ com.sun.star.sheet.CellFlags.FORMULA _
+ com.sun.star.sheet.CellFlags.HARDATTR _
+ com.sun.star.sheet.CellFlags.STYLES _
+ com.sun.star.sheet.CellFlags.OBJECTS _
+ com.sun.star.sheet.CellFlags.EDITATTR)
rngClear.CellProtection.IsLocked = False
oSheet1.Protect "pippo"
End Sub
Sub Prova
Dim rngClear As Object
Dim oSheet1 As Object
oSheet1 = ThisComponent.Sheets.GetByName("Foglio1")
oSheet1.Unprotect "pippo"
rngClear = oSheet1.GetCellRangeByName("InputArea")
rngClear.clearContents( _
com.sun.star.sheet.CellFlags.VALUE _
+ com.sun.star.sheet.CellFlags.STRING _
+ com.sun.star.sheet.CellFlags.DATETIME _
+ com.sun.star.sheet.CellFlags.ANNOTATION _
+ com.sun.star.sheet.CellFlags.FORMULA _
+ com.sun.star.sheet.CellFlags.HARDATTR _
+ com.sun.star.sheet.CellFlags.STYLES _
+ com.sun.star.sheet.CellFlags.OBJECTS _
+ com.sun.star.sheet.CellFlags.EDITATTR)
rngClear.CellProtection.IsLocked = False
oSheet1.Protect "pippo"
End Sub
Elio Buonocore OpenOffice 3.2 su Vista
-
- Messaggi: 12
- Iscritto il: martedì 10 agosto 2010, 9:51
Re: macro sblocco celle su foglio protetto
Ho risolto
Sub Prova
Dim rngClear As Object
Dim oSheet1 As Object
Dim CellProtStruc As Object
oSheet1 = ThisComponent.Sheets.GetByName("Foglio1")
oSheet1.Unprotect "pippo"
rngClear = oSheet1.GetCellRangeByName("InputArea")
rngClear.clearContents( _
com.sun.star.sheet.CellFlags.VALUE _
+ com.sun.star.sheet.CellFlags.STRING _
+ com.sun.star.sheet.CellFlags.DATETIME _
+ com.sun.star.sheet.CellFlags.ANNOTATION _
+ com.sun.star.sheet.CellFlags.FORMULA _
+ com.sun.star.sheet.CellFlags.HARDATTR _
+ com.sun.star.sheet.CellFlags.STYLES _
+ com.sun.star.sheet.CellFlags.OBJECTS _
+ com.sun.star.sheet.CellFlags.EDITATTR)
CellProtStruc = rngClear.CellProtection
CellProtStruc.isLocked = False
rngClear.CellProtection = CellProtStruc
oSheet1.Protect "pippo"
End Sub
Sub Prova
Dim rngClear As Object
Dim oSheet1 As Object
Dim CellProtStruc As Object
oSheet1 = ThisComponent.Sheets.GetByName("Foglio1")
oSheet1.Unprotect "pippo"
rngClear = oSheet1.GetCellRangeByName("InputArea")
rngClear.clearContents( _
com.sun.star.sheet.CellFlags.VALUE _
+ com.sun.star.sheet.CellFlags.STRING _
+ com.sun.star.sheet.CellFlags.DATETIME _
+ com.sun.star.sheet.CellFlags.ANNOTATION _
+ com.sun.star.sheet.CellFlags.FORMULA _
+ com.sun.star.sheet.CellFlags.HARDATTR _
+ com.sun.star.sheet.CellFlags.STYLES _
+ com.sun.star.sheet.CellFlags.OBJECTS _
+ com.sun.star.sheet.CellFlags.EDITATTR)
CellProtStruc = rngClear.CellProtection
CellProtStruc.isLocked = False
rngClear.CellProtection = CellProtStruc
oSheet1.Protect "pippo"
End Sub
Elio Buonocore OpenOffice 3.2 su Vista
Re: [RISOLTO] macro sblocco celle su foglio protetto
Sei stato "troppo generoso" con gli attributi da cancellare!!
Cancella solo gli attribuiti che servono verificali ad uno ad uno.
In particolare non cancellare gli attributi
+ com.sun.star.sheet.CellFlags.HARDATTR _
e
+ com.sun.star.sheet.CellFlags.EDITATTR
Ed a questo punto non sei costretto a riassegnarli con
.CELLPROTECTION
Avrai un codice molto più chiaro
ciao
g
Cancella solo gli attribuiti che servono verificali ad uno ad uno.
In particolare non cancellare gli attributi
+ com.sun.star.sheet.CellFlags.HARDATTR _
e
+ com.sun.star.sheet.CellFlags.EDITATTR
Ed a questo punto non sei costretto a riassegnarli con
.CELLPROTECTION
Avrai un codice molto più chiaro
ciao
g
Per cortesia, inserisci [Risolto] nel Titolo iniziale se il tuo problema è stato risolto.
-
Win 7 AOO4.1 + Ubuntu 14.04 AOO4.1 - Esci dall'illegalità: utilizza OpenOffice !
-
Win 7 AOO4.1 + Ubuntu 14.04 AOO4.1 - Esci dall'illegalità: utilizza OpenOffice !
-
- Messaggi: 12
- Iscritto il: martedì 10 agosto 2010, 9:51
Re: [RISOLTO] macro sblocco celle su foglio protetto
Grazie per la precisazione
Elio
Elio
Elio Buonocore OpenOffice 3.2 su Vista