Discussione:
password e Vba
(troppo vecchio per rispondere)
Mauro Furlanetto
2016-07-04 21:33:35 UTC
Permalink
salve da un pò stò usando un semplice codice che prima toglie la pass al foglio e poi la rimette , tutto funzina solo che quando apro il foglio la protezione nn esclude le celle bloccate ma ne permette la selezione anche se ne impedisce la modifica , ecco io vorrei che impedisse anche l'accesso alle celle bloccate , questo perchè il foglio viene usato da molte persone e pochi hanno dimestichezza con Excel
questo il codice :


Private Sub Worksheet_Change(ByVal Target As Range)

Sheets("Prospetto Rotoli").Unprotect "741963"

"mio codice"

Sheets("Prospetto Rotoli").Protect "741963"

End Sub



grazie per l'aiuto
casanmaner
2016-07-04 22:07:17 UTC
Permalink
Post by Mauro Furlanetto
salve da un pò stò usando un semplice codice che prima toglie la pass al foglio e poi la rimette , tutto funzina solo che quando apro il foglio la protezione nn esclude le celle bloccate ma ne permette la selezione anche se ne impedisce la modifica , ecco io vorrei che impedisse anche l'accesso alle celle bloccate , questo perchè il foglio viene usato da molte persone e pochi hanno dimestichezza con Excel
Private Sub Worksheet_Change(ByVal Target As Range)
Sheets("Prospetto Rotoli").Unprotect "741963"
"mio codice"
Sheets("Prospetto Rotoli").Protect "741963"
End Sub
grazie per l'aiuto
Registra una macro dove proteggi il foglio e tra le opzioni permesse togli la spunta su "Seleziona celle bloccate" e ottieni questo:
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
ActiveSheet.EnableSelection = xlUnlockedCells

Quindi aggiunghi questa seconda riga di comando per impedire che le celle bloccate vengano selezionate.

Io però ti consiglierei una cosa.
Proteggere il foglio quando la cartella di lavoro viene aperta utilizzando l'opzione UserfaceInterfaceOnly.
In questo modo non dovrai sproteggere e poi riproteggere il foglio per compiere le operazioni tramite VBA.
Ad es. dal modulo ThisWorkbook:

Private Sub Workbook_Open()
With Me
With .Worksheets("Foglio1")
.Protect Password:="741963", UserInterfaceOnly:=True
.EnableSelection = xlUnlockedCells
End With
End With
End Sub

Quasi tutti i comandi VBA potranno essere effettuati senza dover sproteggere il foglio (per alcuni, che al momento non ricordo a memoria, occorrerà comunque agire eliminando la protezione e reimpostandola sempre utilizzando UserInterfaceOnly su True).

Inoltre, come ulteriore consiglio, potresti dichiarare in una costante pubblica la pw e poi utilizzare questa variabile al posto di digitare ogni volta la password.
Ad es. nel primo modulo che utilizzi potresti dichiarare come prime dichiarazioni:
Public Const MyPw="741963"

e poi utilizzare MyPw con Protect MyPw o Unprotect MyPw

ciao
Mauro Furlanetto
2016-07-05 19:16:28 UTC
Permalink
grazie mille casanmaner ! non ci ho capito nulla ma funziona ! ho copiato il codice

Private Sub Workbook_Open()
With Me
With .Worksheets("Foglio1")
.Protect Password:="741963", UserInterfaceOnly:=True
.EnableSelection = xlUnlockedCells
End With
End With
End Sub

in ThisWorkbook e tutto va a meraviglia ..........purtroppo nn ho capito neanche l'ultima parte nella quale mi suggerisci di creare una costante ma ci arroverò ....con calma :)

a dirla tutta è un mesetto che cerco e provo , avevo provato anche a registrare una macro proteggendo il foglio ma nn sono arrivato a nulla !

non importa ogni cosa a suo tempo grazie ancora e a presto perchè la voglia di provare nn mi manca e sicuramente mi imbatterò in altri problemi !
Mauro Furlanetto
2016-07-05 19:18:39 UTC
Permalink
Post by Mauro Furlanetto
grazie mille casanmaner ! non ci ho capito nulla ma funziona ! ho copiato il codice
Private Sub Workbook_Open()
With Me
With .Worksheets("Foglio1")
.Protect Password:="741963", UserInterfaceOnly:=True
.EnableSelection = xlUnlockedCells
End With
End With
End Sub
in ThisWorkbook e tutto va a meraviglia ..........purtroppo nn ho capito neanche l'ultima parte nella quale mi suggerisci di creare una costante ma ci arriverò ....con calma :)
a dirla tutta è un mesetto che cerco e provo , avevo provato anche a registrare una macro proteggendo il foglio ma nn sono arrivato a nulla !
non importa ogni cosa a suo tempo grazie ancora e a presto perchè la voglia di provare nn mi manca e sicuramente mi imbatterò in altri problemi !
Mauro Furlanetto
2016-07-05 19:19:29 UTC
Permalink
Post by Mauro Furlanetto
grazie mille casanmaner ! non ci ho capito nulla ma funziona ! ho copiato il codice
Private Sub Workbook_Open()
With Me
With .Worksheets("Foglio1")
.Protect Password:="741963", UserInterfaceOnly:=True
.EnableSelection = xlUnlockedCells
End With
End With
End Sub
in ThisWorkbook e tutto va a meraviglia ..........purtroppo nn ho capito neanche l'ultima parte nella quale mi suggerisci di creare una costante ma ci arriverò ....con calma :)
a dirla tutta è un mesetto che cerco e provo , avevo provato anche a registrare una macro proteggendo il foglio ma nn sono arrivato a nulla !

non importa ogni cosa a suo tempo grazie ancora e a presto perchè la voglia di provare nn mi manca e sicuramente mi imbatterò in altri problemi !
casanmaner
2016-07-05 20:27:34 UTC
Permalink
Post by Mauro Furlanetto
grazie mille casanmaner ! non ci ho capito nulla ma funziona ! ho copiato il codice
Private Sub Workbook_Open()
With Me
With .Worksheets("Foglio1")
.Protect Password:="741963", UserInterfaceOnly:=True
.EnableSelection = xlUnlockedCells
End With
End With
End Sub
in ThisWorkbook e tutto va a meraviglia ..........purtroppo nn ho capito neanche l'ultima parte nella quale mi suggerisci di creare una costante ma ci arroverò ....con calma :)
a dirla tutta è un mesetto che cerco e provo , avevo provato anche a registrare una macro proteggendo il foglio ma nn sono arrivato a nulla !
non importa ogni cosa a suo tempo grazie ancora e a presto perchè la voglia di provare nn mi manca e sicuramente mi imbatterò in altri problemi !
Per quanto riguarda il capire qualcosa prova a digitare F1 (tasto istruzioni) dopo aver fatto in modo che il cursore del mouse si trovi all'interno di un metodo o una proprietà. Ti si apriranno le istruzioni (purtroppo le ultime versioni solo on line è in inglese).
Ad esempio per Protect in relazione al paramentro UserInterfaceOnly viene specificato che "Se ha valore True, la protezione verrà applicata all'interfaccia utente ma non alle macro. Se questo argomento viene omesso, verranno protette sia le macro che l'interfaccia utente."
Dove l'interfaccia utente in pratica e il foglio di lavoro dove agisce l'utente.

Qui il solito file di esempio dove nel modulo1 ho inserito una procedura che protegge tutti i fogli presenti e la cartella di lavoro.
Ho dichiarato una costante pubblica PW="12345" che viene utilizzata nelle varie righe di comando Protect e Unprotect.
La routine Proteggi viene lanciata all'apertura del file tramite l'evento Private Sub Workbook_Open() come precedente esempio (solo che invece di avere il codice da eseguire viene richimata la routine che lo contiene.
E' presente una routine Sproteggi che fa l'esatto contrario e cioé sprotegge tutti i fogli presenti e la cartella di lavoro.
Inoltre vedrai che nel foglio1 non è più presente il pulsante (dell'altro topic).
Ma se provi a inserire, tramite l'elenco a discesa presente, Femmina o Maschio (o cella vuota) vedrai che il risultato sarà lo stesso (ho aggiunto che se la cella è vuota vengono cancellate sia A3 che A4.
Per vedere come ho fatto ciò vai nel progetto VBA nel modulo del foglio1 (per andarci direttamente fai click destro sulla scheda del Foglio1 e seleziona Visualizza codice).

Giusto per farti vedere quante cose si possono fare con il VBA :-)

Ci va un po' di calma ma a mio parere basta capire una regola semplice e cioé che si tratta di una programmazione ad oggetti e ogni oggetto ha dei metodi (o azioni che si possono compiere) e delle proprietà.
Excel è un oggetto e ha i suoi metodi (azioni) e proprietà.
La cartella di lavoro è un oggetto e ha i suoi metodi e proprità.
Il foglio di lavoro è un oggetto con propri metodi e proprietà
La cella (range) è un oggetto anche lui con propri metodi e proprietà.
E via discorrendo (grafici, userform, ecc. ecc.).

Ad esempio in una macro scrivi ThisWorkbook e poi il punto (ThisWorkbook.)
Vedrai che si aprirà un elenco dei metodi e proprietà dell'oggetto ThisWorkbook che altro non è che la cartella di lavoro su cui stai operando
Fai lo stesso con Foglio1. e vedrai l'elenco dei metodi e proprietà del foglio di lavoro.

Qui il link al file di esempio
https://www.dropbox.com/s/q5b5lf1ocodjgwq/Esempio%20Mauro%20Furlanetto.xlsm?dl=0
Mauro Furlanetto
2016-07-06 19:23:33 UTC
Permalink
grazie infinite casa ! userò sicuramente questo foglio e spero di implementarlo per bene :)
Continua a leggere su narkive:
Loading...