| Protezione di Ricky |
Ciao big, ciao a tutti. big, come ti ho scritto
precedentemente ora la macro funziona ma la tendina a discesa mi
appare in mezzo allo schermo: si può far apparire in alto sulla
barra degli strumenti? il problema di oggi comunque non è
questo: come posso proteggere il file creato in modo che nessuno
possa andare a modificarlo? mi spiego: sai che ci sono al suo
interno 30 fogli di lavoro, sai che su 15 vengono inseriti dati e su
15 appaiono i grafici, ho protetto foglio per foglio (lasciando non
bloccate le celle dove si devono inserire i dati ovviamente) ma non
blocco l'accesso alle macro: come posso fare? e come posso fare a
proteggere il tutto senza dover proteggere foglio per foglio? non
c'è la possibilità di inibire l'accesso alle macro digitando la pwd
una volta sola e che valga per tutti i fogli contenuti nella
cartella (o file che dir si voglia)? grazie a tutti by ricky |
|
| Ciao ! di Apoben64 |
Spero ti non intralciarmi con i consigli di big
ronnie, considerando di mettere una password al progetto vba ,
hai pensato ad una macro che ti nasconda o inibisca tutta la barra
degli strumenti ? in questo modo i fogli verrebbero visualizzati
senza però poterli modificare, in quanto protetti e con la barra
degli strumenti inibita. se vuoi , contattami e ti invio un file
di questo tipo. un saluto luca!
p.s. tieni di conto che
la protezione in excel è molto blanda , esistono per tutto il
pacchetto di office programmi che permettono di scoprire le
password, ma questa come dicono è un'altra storia . |
|
| No problem di Ricky |
Figurati, il mio messaggio era indirizzato a big
perchè precedentemente mi aveva sempre risposto lui, ma i consigli
li accetto da chiunque. però mi dici che i fogli non si possono
modificare: io ho bisogno di inserire dei dati (punteggi) che a loro
volta andranno a modificare (aggiornare) i grafici in altri fogli.
in ogni foglio io ho "bloccato" tutte le celle nelle quali non
bisogna scrivere ma in questo modo sai che bisogna proteggere il
foglio per attivare la funzione. siccome è una storia più finita
tutte le volte che devo apportare variazioni per i singoli atleti
sui loro fogli dover togliere la protezione da un foglio, modificare
le condizioni di alcune celle, riproteggerlo, andare in un altro
foglio ecc.ecc. volevo vedere se era possibile appunto "bloccare"
tutta la cartella ma lasciando all'atleta la possibilità di inserire
i dati e poi visualizzare il grafico corrispondente ma senza
modificare nient'altro e senza poter vedere le macro. aspetto tue
notizie e già che ci sei se hai un programmino come quello che hai
nominato prima ed uno per poter invece cancellare le pwd immesse in
un pc in modo che quel progr non le possa leggere. a presto by
ricky. |
|
| di Apoben64 |
Ricky , la mia voleva essere solo una battuta e
niente di più in quanto ho stima di big ronnie e di come ti ha
seguito nel tuo problema. quindi lascio a lui la parte che riguarda
l'applicazione. per quanto attiene al programma che scopre le
password del pacchetto office è "passware" ed è a pagamento .
per quanto attiene all'applicazione ( scopri e nascondi la barra
degli strumenti) questa si attiva all'apertura del file ed anche un
pulsante a cui puoi collegare eventualmente una password per
disabitarla quando ti occorre inserire dei dati. peraltro se
altri devono inserire solo dei dati e non gestirli, forse con una
userform puoi dargli questa possibilità senza interferire
direttamente col foglio . in ogni modo se mi mandi tramite la
sezione contatti la tua email, ti mando il file , ci dai un'occhiata
e poi ne riparliamo ! che ne pensi ? un saluto luca |
|
| di Big ronnie |
Ciao ricky,quarda se questo ti va bene. per
quanto riguarda la posizione della barra troverai nel codice la
propietà "top" e "left" da sistemare secondo le tue esigenze.adesso
all'apertura della cartella ti vengono protetti tutti i fogli e
nella barra avrai un bottone chiamato "abilitazione" che premendolo
e trmite una password da inserire ti fa apparie altri due
bottoni.premendo sproteggi ti si chiede di inserire il numero del
foglio da sproteggere per la correzzione dopodichè premi "proteggi"
e tutto torna come prima.io ho convertito in intero(num. del foglio)
quello che inserirai nell'inputbox,quindi se tu vorrai lavorare con
i nomi dei fogli sistema il codice nelle macro nel modulo1 nominate
sprotezione-protezione(cioè togli cint).terminate le correzzioni
premi "togli abilitazione" e i bottoni di correzzione spariranno.le
password le ho chiamate robinhood in onore del campione di tutti i
tempi quindi se le vorrai cambiare ti sarà facile vedere dove le ho
scritte.in ultimo per proteggere il testo delle macro vai
sull'editor vba premi strumenti-propietà di vbaproject-protezione
biffa la casella e inserisci le password.se ho dimenticato qualcosa
scrivi.ciao a risentirci
Nel modulo1
Sub AttivaFoglio()
Set combo = Application.CommandBars("Ricky").Controls(1)
For I = 1 To Sheets.Count
If combo.Text = Sheets(I).Name Then Sheets(I).Activate
Next I
End Sub
Sub Sprotezione()
NumeroFoglio = InputBox("Inserisci il numero del foglio da sproteggere", "SPROTEZIONE FOGLIO")
Workbooks("Ricky").Sheets(CInt(NumeroFoglio)).Unprotect Password:="RobinHood"
End Sub
Sub Protezione()
NumeroFoglio = InputBox("Inserisci il numero del foglio da Proteggere", "PROTEZIONE FOGLIO")
Workbooks("Ricky").Sheets(CInt(NumeroFoglio)).Protect Password:="RobinHood"
End Sub
Sub Abilita()
Password = InputBox("Inserisci la Password per la correzione dei fogli", _
"ABILITA ALLA CORREZIONE")
If Password = "RobinHood" Then
Application.CommandBars("Ricky").Controls(3).Visible = True
Application.CommandBars("Ricky").Controls(4).Visible = True
End If
End Sub
Sub TogliAbilitazione()
Application.CommandBars("Ricky").Controls(4).Visible = False
Application.CommandBars("Ricky").Controls(5).Visible = False
End Sub
Nel thisworkbook
Sub Workbook_BeforeClose(Cancel As Boolean)
Application.CommandBars("Ricky").Delete
End Sub
Sub Workbook_Open()
'Così proteggi ogni foglio nella cartella.
For III = 1 To Sheets.Count
Sheets(III).Protect Password:="RobinHood"
Next III
Application.CommandBars.Add(Name:="Ricky").Visible = True
Max = Len(Sheets(1).Name)
Set Mybar = Application.CommandBars("Ricky")
Set mycontrol = Mybar.Controls.Add(Type:=msoControlComboBox)
For I = 1 To Sheets.Count
mycontrol.AddItem Sheets(I).Name
If Max < Len(Sheets(I).Name) Then Max = Len(Sheets(I).Name)
mycontrol.Width = Max * 8 'Larghezza Combobox in Commandbar
mycontrol.DropDownWidth = Max * 8 'Larghezza Tendina a discesa
Next I
Mybar.Top = 52'Da cambiare secondo le tue esig.
Mybar.Left = 400'Da cambiare secondo le tue esig
mycontrol.ListIndex = 1
mycontrol.OnAction = "AttivaFoglio"
For II = 1 To 4
Set Pulsante = Mybar.Controls.Add(Type:=msoControlButton)
Next II
Mybar.Controls(2).Caption = "Abilitazione"
Mybar.Controls(2).Style = msoButtonCaption
Mybar.Controls(2).OnAction = "Abilita"
Mybar.Controls(3).Caption = "Togli Abilitazione"
Mybar.Controls(3).Style = msoButtonCaption
Mybar.Controls(3).OnAction = "TogliAbilitazione"
Mybar.Controls(4).Caption = "Sproteggi"
Mybar.Controls(4).Style = msoButtonCaption
Mybar.Controls(4).OnAction = "Sprotezione"
Mybar.Controls(5).Caption = "Proteggi"
Mybar.Controls(5).Style = msoButtonCaption
Mybar.Controls(5).OnAction = "Protezione"
Mybar.Controls(3).Visible = False
Mybar.Controls(4).Visible = False
End Sub
| |
|
| di Big ronnie |
| Ho dimenticato, grazie per la fiducia
luca.ciao |
|
| Grazie a te ! di
Apoben64 |
Ciao big ronnie, sono io che ti ringrazio perchè il
mio pensiero è che abbiamo bisogno di persone come te che ci aiutino
a far crescere questa realtà , molto diversa e più disponibile .
mi auguro che continuerai ad essere presente e collaborare con
noi. un saluto luca . |
|
| Grazie a voi di Ricky |
Grazie a tutti voi che siete sempre disponibili a
dare una mano a tutti. purtroppo solo ieri sera tardi mi è ripartito
internet e quindi non ho potuto visualizzare ne i vostri messaggi ne
le vostre modifiche ma questa sera ci darò dentro di sicuro.
grazie ancora a tutti by ricky. |
|
| Per i più pigri di Big
ronnie |
Ciao ricky, copia questo codice è
migliore.
Nel Modulo1
Sub AttivaFoglio()
Set combo = Application.CommandBars("Ricky").Controls(1)
For I = 1 To Sheets.Count
If combo.Text = Sheets(I).Name Then Sheets(I).Activate
Next I
End Sub
Sub Sprotezione()
NomeFoglio = Application.CommandBars("Ricky").Controls(4).Text
ThisWorkbook.Sheets(NomeFoglio).Unprotect Password:="a"
Application.CommandBars("ricky").Controls(4).Text = "Sprotezione"
End Sub
Sub Protezione()
NomeFoglio = Application.CommandBars("Ricky").Controls(5).Text
ThisWorkbook.Sheets(NomeFoglio).Protect Password:="a"
Application.CommandBars("ricky").Controls(5).Text = "Protezione"
End Sub
Sub Abilita()
Password = InputBox("Inserisci la Password per la correzione dei fogli", _
"ABILITA ALLA CORREZIONE")
If Password = "RobinHood" Then
Application.CommandBars("Ricky").Controls(4).Visible = True
Application.CommandBars("Ricky").Controls(5).Visible = True
End If
End Sub
Sub TogliAbilitazione()
Application.CommandBars("Ricky").Controls(4).Visible = False
Application.CommandBars("Ricky").Controls(5).Visible = False
End Sub
In thisworkbook
Sub Workbook_BeforeClose(Cancel As Boolean)
Application.CommandBars("Ricky").Delete
End Sub
Sub Workbook_Open()
'Così proteggi ogni foglio nella cartella.
For III = 1 To Sheets.Count
Sheets(III).Protect Password:="a"
Next III
Application.CommandBars.Add(Name:="Ricky").Visible = True
Max = Len(Sheets(1).Name)
Set Mybar = Application.CommandBars("Ricky")
Set mycontrol = Mybar.Controls.Add(Type:=msoControlComboBox)
aa mycontrol
Mybar.Top = 52
Mybar.Left = 400
mycontrol.ListIndex = 1
mycontrol.OnAction = "AttivaFoglio"
For II = 1 To 2
Set Pulsante = Mybar.Controls.Add(Type:=msoControlButton)
Next II
Mybar.Controls(2).Caption = "Abilitazione"
Mybar.Controls(2).Style = msoButtonCaption
Mybar.Controls(2).OnAction = "Abilita"
Mybar.Controls(3).Caption = "Togli Abilitazione"
Mybar.Controls(3).Style = msoButtonCaption
Mybar.Controls(3).OnAction = "TogliAbilitazione"
For III = 1 To 2
Set Pulsante = Mybar.Controls.Add(Type:=msoControlComboBox)
Next III
aa Application.CommandBars("ricky").Controls(4)
Mybar.Controls(4).Text = "Sprotezione"
Mybar.Controls(4).Width = Len(Mybar.Controls(4).Text) * 8
Mybar.Controls(4).OnAction = "Sprotezione"
aa Application.CommandBars("ricky").Controls(5)
Mybar.Controls(5).Text = "Protezione"
Mybar.Controls(5).Width = Len(Mybar.Controls(5).Text) * 8
Mybar.Controls(5).OnAction = "Protezione"
Mybar.Controls(4).Visible = False
Mybar.Controls(5).Visible = False
End Sub
Sub aa(X)
For I = 1 To Sheets.Count
X.AddItem Sheets(I).Name
If Max < Len(Sheets(I).Name) Then Max = Len(Sheets(I).Name)
X.Width = Max * 8 'Larghezza Combobox in Commandbar
X.DropDownWidth = Max * 8 'Larghezza Tendina a discesa
Next I
End Sub | |
|
| di Mauro |
| Complimenti big, eccellente lavoro! |