Protezione fogli di lavoro

  • 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!