Pannello di Controllo Moderatore ]

[Risolto] MACRO per proteggere celle in un foglio

Discussioni sull'applicazione per i fogli di calcolo

[Risolto] MACRO per proteggere celle in un foglio

Messaggioda Raoul Duke » sabato 27 aprile 2019, 21:47

Salve, ho letto che per proteggere alcune celle e renderne modificabili altre bisogna prima proteggere il foglio e poi sbloccare le celle che si desidera rendere modificabili. ho provato questo codice ma non funziona né per le singole celle né per i range.
qualcuno sa come mai?

Codice: Seleziona tutto   Espandi visualeStringi visuale
Sub Proteggi
  Doc    = thisComponent
  Foglio = Doc.sheets.getByName("Foglio1")
  Foglio.protect("")
  Cell=Foglio.getCellByposition(2,7)
  Cell.CellProtection.IsLocked = false
  Range=Foglio.getCellRangeByposition (0,1,2,6)
  Range.CellProtection.IsLocked = false
End Sub
Allegati
PROVA.ods
(14.89 KiB) Scaricato 16 volte
Ultima modifica di Raoul Duke il lunedì 29 aprile 2019, 16:46, modificato 1 volta in totale.
OpenOffice 4.1.5 con MacOS 10.13.6
Raoul Duke
 
Messaggi: 116
Iscritto il: giovedì 7 marzo 2019, 12:11

Re: MACRO per proteggere celle in un foglio

Messaggioda patel » domenica 28 aprile 2019, 9:16

Tu proponi un codice non funzionante senza dire cosa vuoi ottenere, quali sono le celle modificabili e quali quelle protette?
comunque devi prima definire il range modificabile e poi proteggere il foglio
-------------------
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: 3323
Iscritto il: venerdì 30 aprile 2010, 7:04
Località: Livorno

Re: MACRO per proteggere celle in un foglio

Messaggioda Raoul Duke » domenica 28 aprile 2019, 20:35

le celle da tenere modificabili sono quelle definite dalle variabili Cell (2,7) e Range (0,1,2,6).
quindi dici di scrivere cosi?

Codice: Seleziona tutto   Espandi visualeStringi visuale
Sub Proteggi
  Doc    = thisComponent
  Foglio = Doc.sheets.getByName("Foglio1")
  Cell=Foglio.getCellByposition(2,7)
  Cell.CellProtection.IsLocked = false
  Range=Foglio.getCellRangeByposition (0,1,2,6)
  Range.CellProtection.IsLocked = false
  Foglio.protect("")
End Sub


perchè anche ordinando le dichiarazioni in questo modo non mi funziona. rimangono tutte le celle non modificabili, anche cell e range
OpenOffice 4.1.5 con MacOS 10.13.6
Raoul Duke
 
Messaggi: 116
Iscritto il: giovedì 7 marzo 2019, 12:11

Re: MACRO per proteggere celle in un foglio

Messaggioda patel » lunedì 29 aprile 2019, 7:39

prova questa
Codice: Seleziona tutto   Espandi visualeStringi visuale
Sub Proteggi
  Doc    = thisComponent
  Foglio = Doc.sheets.getByName("Foglio1")
  Foglio.unprotect("")
  cp = Foglio.getCellByposition(2,7).CellProtection
  cp.IsLocked = FALSE
  Foglio.getCellByposition(2,7).CellProtection = cp
  cp=Foglio.getCellRangeByposition (0,1,2,6).CellProtection
  cp.IsLocked = false
  Foglio.getCellRangeByposition (0,1,2,6).CellProtection=cp
  Foglio.protect("")
End Sub
-------------------
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: 3323
Iscritto il: venerdì 30 aprile 2010, 7:04
Località: Livorno

Re: MACRO per proteggere celle in un foglio

Messaggioda Raoul Duke » lunedì 29 aprile 2019, 9:44

Funziona perfettamente!
ma mi puoi spiegare la logica, così posso rifarlo in altri punti?
in particolare non capisco il significato delle righe commentate con i punti interrogativi

Codice: Seleziona tutto   Espandi visualeStringi visuale
sub Proteggi
  Doc    = thisComponent
  Foglio = Doc.sheets.getByName("Foglio1")
  Foglio.unprotect("")
  cp = Foglio.getCellByposition(2,7).CellProtection  'definisco la cella da rendere modificabile
  cp.IsLocked = FALSE                                             'dichiaro che sarà modificabile
  Foglio.getCellByposition(2,7).CellProtection = cp  '???????
  cp=Foglio.getCellRangeByposition (0,1,2,6).CellProtection  'dichiaro il range che sarà modificabile
  cp.IsLocked = false                                              'dichiaro che sarà modificabile
  Foglio.getCellRangeByposition (0,1,2,6).CellProtection=cp '???????
  Foglio.protect("")
End Sub


OpenOffice 4.1.5 con MacOS 10.13.6
Raoul Duke
 
Messaggi: 116
Iscritto il: giovedì 7 marzo 2019, 12:11

Re: MACRO per proteggere celle in un foglio

Messaggioda Gaetanopr » lunedì 29 aprile 2019, 10:27

Una formula più sintetica è questa
Codice: Seleziona tutto   Espandi visualeStringi visuale
Sub Proteggi
Dim PC As New "com.sun.star.util.CellProtection"
  Doc    = thisComponent
  Foglio = Doc.sheets.getByName("Foglio1")
  Foglio.Unprotect("")
  PC.IsLocked = False
  Foglio.getCellByposition(2,7).CellProtection = PC
  Foglio.getCellRangeByposition (0,1,2,6).CellProtection = PC
  Foglio.protect("")
End Sub
Openoffice 4.1 su windows xp
Gaetanopr
Volontario
Volontario
 
Messaggi: 2731
Iscritto il: mercoledì 21 novembre 2012, 20:07

Re: MACRO per proteggere celle in un foglio

Messaggioda Raoul Duke » lunedì 29 aprile 2019, 10:30

ah quindi quando definisco un range seguito da .cellprotection e lo pongo uguale a pc, mi rende quel range modificabile o meno (a seconda se ho definito pc.islocked vero o falso), giusto?
grazie mille!
OpenOffice 4.1.5 con MacOS 10.13.6
Raoul Duke
 
Messaggi: 116
Iscritto il: giovedì 7 marzo 2019, 12:11

Re: MACRO per proteggere celle in un foglio

Messaggioda Gaetanopr » lunedì 29 aprile 2019, 10:33

Esatto
Openoffice 4.1 su windows xp
Gaetanopr
Volontario
Volontario
 
Messaggi: 2731
Iscritto il: mercoledì 21 novembre 2012, 20:07

Re: MACRO per proteggere celle in un foglio

Messaggioda Raoul Duke » lunedì 29 aprile 2019, 10:42

Pensavo di inserire una casella di controllo (di quelle spuntabili per capirci) nel documento che quando è selezionata consente le modifiche e quando non lo è le vieta.
ho creato le due macro (che in pratica differiscono solo per il fatto che in una pc.islocked è true e nell'altra false) ma non ho capito come assegnarle allo stato della casella. sapete come si fa?
OpenOffice 4.1.5 con MacOS 10.13.6
Raoul Duke
 
Messaggi: 116
Iscritto il: giovedì 7 marzo 2019, 12:11

Re: MACRO per proteggere celle in un foglio

Messaggioda Gaetanopr » lunedì 29 aprile 2019, 10:44

Ti basta associare alla casella di controllo la macro in questione, usando la proprietà State.
Openoffice 4.1 su windows xp
Gaetanopr
Volontario
Volontario
 
Messaggi: 2731
Iscritto il: mercoledì 21 novembre 2012, 20:07

Re: MACRO per proteggere celle in un foglio

Messaggioda Gaetanopr » lunedì 29 aprile 2019, 10:54

Ti allego esempio
Allegati
PROVA (2).ods
(12.89 KiB) Scaricato 21 volte
Openoffice 4.1 su windows xp
Gaetanopr
Volontario
Volontario
 
Messaggi: 2731
Iscritto il: mercoledì 21 novembre 2012, 20:07

Re: MACRO per proteggere celle in un foglio

Messaggioda Raoul Duke » lunedì 29 aprile 2019, 10:55

e dove la trovo questa proprieta?
in modo bozza on, clicco cul destro sulla casella di controllo e poi? campo di controllo?!? :roll:
OpenOffice 4.1.5 con MacOS 10.13.6
Raoul Duke
 
Messaggi: 116
Iscritto il: giovedì 7 marzo 2019, 12:11

Re: MACRO per proteggere celle in un foglio

Messaggioda Raoul Duke » lunedì 29 aprile 2019, 10:58

ah ok, la carico su "eseguire azione", giusto?
OpenOffice 4.1.5 con MacOS 10.13.6
Raoul Duke
 
Messaggi: 116
Iscritto il: giovedì 7 marzo 2019, 12:11

Re: MACRO per proteggere celle in un foglio

Messaggioda Gaetanopr » lunedì 29 aprile 2019, 11:01

Si, non hai visto l'esempio che ti ho allegato nel precedente messaggio?
Openoffice 4.1 su windows xp
Gaetanopr
Volontario
Volontario
 
Messaggi: 2731
Iscritto il: mercoledì 21 novembre 2012, 20:07

Re: MACRO per proteggere celle in un foglio

Messaggioda Raoul Duke » lunedì 29 aprile 2019, 11:11

si, grazie! avevo scritto prima che mi arrivasse il tuo mex con allegato.
un'ultima cosa: c'è modo di ingrandire quel quadratino della spunta? la scritta proteggi/sproteggi si ingrandisce con le dimensioni del carattere dentro campo di controllo - generale, ma il quadratino rimane piccolo...
OpenOffice 4.1.5 con MacOS 10.13.6
Raoul Duke
 
Messaggi: 116
Iscritto il: giovedì 7 marzo 2019, 12:11

Re: MACRO per proteggere celle in un foglio

Messaggioda patel » lunedì 29 aprile 2019, 11:30

però c'è qualcosa che non funziona bene in questo tipo di codice, allego un file con questa macro
Codice: Seleziona tutto   Espandi visualeStringi visuale
Sub Proteggi2
Dim PC As New "com.sun.star.util.CellProtection"
  Doc    = thisComponent
  Foglio = Doc.sheets.getByName("Foglio1")
  Foglio.Unprotect("")
  PC.IsLocked = True
  Foglio.GetCellRangeByName("D8").CellProtection = PC
  Foglio.GetCellRangeByName("a5:D5").CellProtection = PC
  Foglio.protect("")
End Sub

non capisco perché protegge anche le celle a sfondo giallo
Allegati
ProtectRange2.ods
(10.41 KiB) Scaricato 18 volte
-------------------
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: 3323
Iscritto il: venerdì 30 aprile 2010, 7:04
Località: Livorno

Re: MACRO per proteggere celle in un foglio

Messaggioda Gaetanopr » lunedì 29 aprile 2019, 11:37

patel, le hai sprotette prima di lanciare la macro?
Openoffice 4.1 su windows xp
Gaetanopr
Volontario
Volontario
 
Messaggi: 2731
Iscritto il: mercoledì 21 novembre 2012, 20:07

Re: MACRO per proteggere celle in un foglio

Messaggioda Raoul Duke » lunedì 29 aprile 2019, 11:38

a me anche lo faceva all'inizio sul doc che hai condiviso patel, poi ho esplicitamente dichiarato islocked false le due celle in questione (solo una volta , ho eseguito il codice e poi cancellato questa dichiarazione) e in seguito non me l'ha piu fatto. probabilmente nella creazione del documento ad un certo punto le avevi dichiarate isblocked true e sono rimaste in questa cdz.
fai questa prova
OpenOffice 4.1.5 con MacOS 10.13.6
Raoul Duke
 
Messaggi: 116
Iscritto il: giovedì 7 marzo 2019, 12:11

Re: MACRO per proteggere celle in un foglio

Messaggioda Gaetanopr » lunedì 29 aprile 2019, 11:40

ma è normale questo comportamento, di default sono tutte protette le celle
Openoffice 4.1 su windows xp
Gaetanopr
Volontario
Volontario
 
Messaggi: 2731
Iscritto il: mercoledì 21 novembre 2012, 20:07

Re: MACRO per proteggere celle in un foglio

Messaggioda Raoul Duke » lunedì 29 aprile 2019, 11:47

che intendi gaetano? nel doc di patel le celle vuote e con sfondobianco sono tutte non protette, anche se non è mai stato dichiarato per loro islocked false
OpenOffice 4.1.5 con MacOS 10.13.6
Raoul Duke
 
Messaggi: 116
Iscritto il: giovedì 7 marzo 2019, 12:11

Re: MACRO per proteggere celle in un foglio

Messaggioda Gaetanopr » lunedì 29 aprile 2019, 11:54

Raoul Duke ha scritto:..... probabilmente nella creazione del documento ad un certo punto le avevi dichiarate isblocked true e sono rimaste in questa cdz.

Le celle sono sempre IsLocked = True di default, devi essere tu tramite macro o manualmente a cambiarle in IsLocked = False

A me il file inviato da patel funziona correttamente, le celle a sfondo gialle rimangono NON PROTETTE, ma bisogna inizialmente renderle sprotette tramite macro o manualmente
Openoffice 4.1 su windows xp
Gaetanopr
Volontario
Volontario
 
Messaggi: 2731
Iscritto il: mercoledì 21 novembre 2012, 20:07

Re: MACRO per proteggere celle in un foglio

Messaggioda Raoul Duke » lunedì 29 aprile 2019, 12:00

A me il file inviato da patel funziona correttamente, le celle a sfondo gialle rimangono NON PROTETTE, ma bisogna inizialmente renderle sprotette tramite macro o manualmente

si esatto, era quello che intendevo nel mio mex.

però a questo punto visto che di defaukt islocked è true... perché succede questo:
nel doc di patel le celle vuote e con sfondobianco sono tutte non protette, anche se non è mai stato dichiarato per loro islocked=false


perchè forse sono state dichiarate in precedenza islocked=false da patel?
OpenOffice 4.1.5 con MacOS 10.13.6
Raoul Duke
 
Messaggi: 116
Iscritto il: giovedì 7 marzo 2019, 12:11

Re: MACRO per proteggere celle in un foglio

Messaggioda patel » lunedì 29 aprile 2019, 12:14

Gaetanopr ha scritto:patel, le hai sprotette prima di lanciare la macro?

ma all'inizio della macro c'è Foglio.Unprotect("")
-------------------
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: 3323
Iscritto il: venerdì 30 aprile 2010, 7:04
Località: Livorno

Re: MACRO per proteggere celle in un foglio

Messaggioda Gaetanopr » lunedì 29 aprile 2019, 12:18

Questo serve solo a sproteggere il foglio(non cambi lo stato di protezione delle celle) una volta riprotetto le celle rimangono sempre protette
Openoffice 4.1 su windows xp
Gaetanopr
Volontario
Volontario
 
Messaggi: 2731
Iscritto il: mercoledì 21 novembre 2012, 20:07

Re: MACRO per proteggere celle in un foglio

Messaggioda patel » lunedì 29 aprile 2019, 14:09

Hai ragione, ora funziona
-------------------
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: 3323
Iscritto il: venerdì 30 aprile 2010, 7:04
Località: Livorno

Re: MACRO per proteggere celle in un foglio

Messaggioda Raoul Duke » lunedì 29 aprile 2019, 15:51

un'ultima cosa: c'è modo di ingrandire quel quadratino della spunta? la scritta proteggi/sproteggi si ingrandisce con le dimensioni del carattere dentro campo di controllo - generale, ma il quadratino rimane piccolo...


invece qualcuno sa come fare sta cosa?
OpenOffice 4.1.5 con MacOS 10.13.6
Raoul Duke
 
Messaggi: 116
Iscritto il: giovedì 7 marzo 2019, 12:11

Re: MACRO per proteggere celle in un foglio

Messaggioda Gaetanopr » lunedì 29 aprile 2019, 16:16

Non si può ingrandire il quadratino, ma con qualche piccolo stratagemma si può creare una casella di controllo con una campo di testo fisso e ingrandirlo a piacimento.
Allegati
PROVA (2).ods
(13.64 KiB) Scaricato 14 volte
Openoffice 4.1 su windows xp
Gaetanopr
Volontario
Volontario
 
Messaggi: 2731
Iscritto il: mercoledì 21 novembre 2012, 20:07

Re: MACRO per proteggere celle in un foglio

Messaggioda Raoul Duke » lunedì 29 aprile 2019, 16:45

ahahahha complimenti Gaetano!
OpenOffice 4.1.5 con MacOS 10.13.6
Raoul Duke
 
Messaggi: 116
Iscritto il: giovedì 7 marzo 2019, 12:11


Torna a Calc

Chi c’è in linea

Visitano il forum: MSN [Bot] e 0 ospiti