|
Rank: AiutAmico
Iscritto dal : 12/4/2008 Posts: 2,008
|
Ciao ragazzi. Sto predisponendo un foglio excel a cui voglio applicare alcune restrizioni. Ho questo problema: Il foglio va protetto con una password, che servirà a dare l'autorizzazione a visualizzare o meno una cella. Se la password non viene inserita o viene inserita nulla, questa cella deve risultare di valore nullo; se la password viene invece inserita la cella presenterà il valore impostato in fase di creazione del foglio. Il fatto è che non ho trovato un opzione in excel che permetta una protezione a livello di singola cella quindi forse l'unico modo per aggirare il problema è tramite macro.. PS: se la password non viene inserita il file deve essere impostato per la sola lettura, ma questo si può fare direttamente con l'opzione dedicata. Vi faccio un esempio: Io che sono "l'amministratore del foglio" e sono in possesso della password, una volta immessa visualizzo con i corretti valori tutte le celle del foglio (in azzurrino quelle che vengono visualizzate correttamente solo dopo l'immisione della pwd): Se la password non viene inserita all'atto dell'apertura del foglio, le celle interessate devono risultare di valore nullo: E' possibile? Se fosse possibile solo via macro, nel caso in cui venissero disabilitate in uno dei pc dove viene aperto il foglio, le celle risulterebbero visibili col valore corretto? Grazie
|
|
|
|
|
Rank: AiutAmico
Iscritto dal : 5/29/2003 Posts: 1,694
|
salve una soluzione potrebbe essere questa: 1) utilizzare una cella remota del foglio per clonare la cella da nascondere. nell'esempio ho utilizzato la cella Z2000 per copiare il contenuto della cella C3 (da nascondere) 2) le macro utilizzate per realizzare la procedura sono: (a) Macro da inserire nel modulo del foglio di lavoro che serve a replicare il valore della cella C3 nella cella Z2000 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = Range("C3").Address Then If Target.Value <> 0 Then Range("Z2000").Value = Target.Value End If End If End Sub (b) Macro che si attiva alla chiusura del foglio di lavoro da inserire nel modulo (Thisworkbook) predispone il foglio con la protezione attiva e il valore nullo nella cella C3 Private Sub Workbook_BeforeClose(Cancel As Boolean) With Sheets("Foglio1") .Cells(3, 3).FormulaHidden = True .Cells(3, 3).Value = 0 .Protect Password:="pippo" End With ThisWorkbook.Save End Sub (c) macro che si attiva all'aperura del file da inserire nel modulo (Thisworkbook) e chiede l'immissione della password per scoprire il valore della cella C3 Private Sub Workbook_Open() With Sheets("Foglio1") .Protect Password:="pippo", UserInterfaceOnly:=True End With x = InputBox("Immetti Password", "PASSWORD") If x = "pippo" Then With Sheets("Foglio1") .Unprotect Password:="pippo" .Cells(3, 3).Value = Range("Z2000") End With Else: Exit Sub End If End Sub Nota: se l'utente disattiva le macro vedrà sempre il valore (0) nella cella C3 e il foglio sarà comunque protetto. Per evitare che l'utente vada a "ravanare" nell'editor di Visual basic sarebbe utile applicare una password nelle proprietà del progetto VBA saluti Giap
|
|
Rank: AiutAmico
Iscritto dal : 12/4/2008 Posts: 2,008
|
Grandissimo come sempre! Funziona alla grande. Grazie mille
Simone
|
|
Rank: AiutAmico
Iscritto dal : 5/29/2003 Posts: 1,694
|
salve Grazie per il riscontro. Buon lavoro Giap
|
|
Rank: AiutAmico
Iscritto dal : 5/9/2011 Posts: 132
|
Scusate se mi allaccio a questo post. @a10n11...ho creato il foglio excel ed inserito una formula su cella c3, salvo e chiudo. Riapro il file excel e inserisco la password ma la cella c3 perde la formula, diventa vuota. Cosa sbaglio? :(
|
|
Rank: AiutAmico
Iscritto dal : 12/4/2008 Posts: 2,008
|
Hai inserito correttamente le macro?
|
|
Rank: AiutAmico
Iscritto dal : 5/9/2011 Posts: 132
|
@simo95, grazie per la risposta. Allora, inizialmente avevo sbagliato a mettere la prima macro in un modulo ma dovevo inserirla sul foglio mentre le altre due vanno messe su thisworkbook, ora inserendo la password la cella c3 mi da il valore ottenuto dalla somma di B5, D4, E5 ma la formula =somma(B5;D4;E5) che avevo inserito perchè è sparita? Allego il file di esempio. http://www.megaupload.com/?d=0XMYV3HOla password è sempre pippo
|
|
Rank: AiutAmico
Iscritto dal : 12/4/2008 Posts: 2,008
|
Non conosco bene VBA ma dal codice direi che la macro funziona copiando il valore della cella in una seconda cella (Z2000) di supporto. Tuttavia copia il solo valore e non un eventuale formula inserita, che all'atto della chiusura della cartella di lavoro viene persa, anche perchè viene riassegnato alla cella il valore 0 . E' un po come se tu facessi un incolla speciale, scegliendo di incollare il solo valore della cella di origine: la formula non viene mantenuta.
Ciao
|
|
Rank: AiutAmico
Iscritto dal : 5/9/2011 Posts: 132
|
Grazie della risposta, spero di trovare la soluzione :(
|
|
Rank: AiutAmico
Iscritto dal : 12/4/2008 Posts: 2,008
|
Basterebbe in teoria modificare la macro, ma non so dove andare a mettere le mani.
|
|
Rank: AiutAmico
Iscritto dal : 5/9/2011 Posts: 132
|
sicuramente @a10n11 conosce la soluzione :) io le macro le applico ma non ne capisco molto :) attendiamo ;)
|
|
Rank: AiutAmico
Iscritto dal : 5/29/2003 Posts: 1,694
|
d4rkheart ha scritto:sicuramente @a10n11 conosce la soluzione :) io le macro le applico ma non ne capisco molto :) attendiamo ;) salve come ti ha fatto notare giustamente Simo, la macro replica solo il valore della cella e non la formula in essa contenuta. Per il problema di Simo la macro assolve il compito, tu dovresti dire esattamente quale risultato vorresti ottenere. saluti Giap
|
|
Rank: AiutAmico
Iscritto dal : 5/9/2011 Posts: 132
|
@a10n11, si può proteggere la formula ed eventuale valore contenuti in una o più celle con password? Potrei procedere con la protezione del foglio con password ma questa mostra il valore della formula, si potrebbe nascondere valore e formula in modo che torni visibile solo dopo aver inserito password?
|
|
Rank: AiutAmico
Iscritto dal : 5/29/2003 Posts: 1,694
|
salve pur non comprendendone l'utlità della procedura richiesta ( se non si vuole che siano visibili le formule può starci, ma che non si rendano visibili i risultati mi è del tutto incomprensibile). In questi casi tanto vale non consentire l'accesso al foglio se non si immette la password. Premesso questo, qui sotto la macro modificata. NB. la macro assegnata al foglio1 non serve più, puoi eliminarla. Le due macro che seguono vanno copiate nel modulo Thisworkbook ( utilizzano sempre la cella di appoggio in Z2000 Private Sub Workbook_BeforeClose(Cancel As Boolean) With Sheets("Foglio1") If .Cells(3, 3).Value <> 0 Then Range("Z2000").Formula = Cells(3, 3).Formula .Cells(3, 3).Value = 0 .Protect Password:="pippo" ThisWorkbook.Save Else ThisWorkbook.Close SaveChanges:=False Application.Quit End If End With End Sub Private Sub Workbook_Open() With Sheets("Foglio1") .Protect Password:="pippo", UserInterfaceOnly:=True End With x = InputBox("Immetti Password", "PASSWORD") If x = "pippo" Then With Sheets("Foglio1") .Unprotect Password:="pippo" .Cells(3, 3).Formula = .Range("Z2000").Formula End With Else : Exit Sub End If End Sub saluti Giap
|
|
Rank: AiutAmico
Iscritto dal : 5/9/2011 Posts: 132
|
Commenta: salve pur non comprendendone l'utlità della procedura richiesta ( se non si vuole che siano visibili le formule può starci, ma che non si rendano visibili i risultati mi è del tutto incomprensibile). In questi casi tanto vale non consentire l'accesso al foglio se non si immette la password.
la macro postata fa bene il suo lavoro ma io faccio sempre le figuracce del cav*lo, scusa :( Per proteggere il file excel ho seguito le istruzioni contenute su questo link http://office.microsoft.com/it-it/excel-help/impostazione-di-una-password-per-aprire-o-modificare-un-documento-una-cartella-di-lavoro-o-una-presentazione-HA010148333.aspxComunque grazie mille per la macro.
|
|
Guest |