proteggere tanti fogli excel



  • proteggere tanti fogli excel
    di Vannisca86 (utente non iscritto) data: 14/01/2014 11:30:29

    SAlve a tutti, ho un problema
    In pratica ho un file excel con all'interno tanti fogli,ho necessità che ogni utente lavori sul proprio foglio senza poter vedere altri fogli ! ad esempio ho il foglio "contabilità" dove ci può lavorare solo un utente,un altro utente che accede allo stesso file non deve poter visualizzare codesto foglio se non tramite password. come posso fare?



  • di Grograman data: 14/01/2014 11:53:01

    Così su due piedi e da adattare, un controllo sul nome utente excel:
     
    Option Explicit
    
    Private Sub Workbook_Open()
    Dim sUtente As String
    Dim ws As Worksheet
    Application.ScreenUpdating = False
      'rendiamoli tutti visibili
      For Each ws In ThisWorkbook.Worksheets
         ws.Visible = xlSheetVisible
      Next ws
      
      Select Case Application.UserName
        Case Is = "Tizio"
          sUtente = "Foglio1" 'nome foglio che deve vedere Tizio
        Case Is = "Caio"
          sUtente = "Foglio2" 'nome foglio che deve vedere Caio
        Case Is = "Sempronio"
         sUtente = "Foglio3" 'nome foglio che deve vedere Sempronio
        Case Else
          ' ThisWorkbook.Close vbNo 'togliere commento per far chiudere il file
      End Select
      
      For Each ws In ThisWorkbook.Worksheets
        If ws.Name <> sUtente Then ws.Visible = xlSheetVeryHidden
      Next ws
    Application.ScreenUpdating = True
    End Sub
    



  • di Vannisca86 (utente non iscritto) data: 14/01/2014 12:16:44

    questo lo faccio inserendo un modulo in visual basic giusto ??



  • di mb data: 14/01/2014 14:09:19

    ciao a tutti
    una curiosità mia come sempre, molto interessante come soluzione quella di grogrman, ma :
    1 se attivo Vba e conosco lo user del pc cambio impostazioni e quindi posso vedere anche il foglio di un'altro ( o mi sbaglio )
    2 stabilito che tizio caio e sempronio inseriscano i dati nei vari fogli dovrò poi generarmi un altro comando ogni volta per poter vedere tutti i fogli compilati o faccio una modifica alla sub in cui con lo user MB posso visualizare tutti i fogli ??
    Grazie a tutti per l'eventuale chiarimento



  • di Grograman (utente non iscritto) data: 14/01/2014 14:34:43

    Ciao emmebi!

    Sì ad entrambe le domande ;)
    Per la prima ti assicuro che molti utenti non sanno come fare copia e incolla, figuriamoci cambiare il nome utente!
     
    Case is "MB"
      For Each ws In ThisWorkbook.Worksheets
        ws.Visible = xlSheetVisible
      Next ws
    Case Else



  • di mb data: 14/01/2014 15:18:11

    ciao Grograman
    grazie per le risposte
    buon pomeriggio alla prossima


  • Errore
    di Vannisca86 (utente non iscritto) data: 15/01/2014 17:45:18

    Mi restituisce all'apertura del file excel il seguente errore :
    Errore di run-time '1004':
    Metodo 'Visible dell'oggetto'_ +Worksheet' non riuscito


    e poi nell'editor di Visual basic mi evidenzia in giallo questa stringa :

     
     If ws.Name <> sUtente Then ws.Visible = xlSheetVeryHidden



  • di marinoernestoch data: 15/01/2014 18:15:43

    Ho provato la routine seguendo passo passo (F8). L'errore lo dà se nessun foglio resta visibile; se invece almeno un foglio è visibile funziona.


  • ..
    di Vannisca86 (utente non iscritto) data: 15/01/2014 18:29:18

    E quindi cosa dovrei fare? nn ho capito tanto bene



  • di marinoernestoch (utente non iscritto) data: 15/01/2014 18:58:34

    devi verificare che almeno una condizione CASE sia soddisfatta. Oppure inserire un foglio visibile a tutti ed inserire nel loop finale l'eccezione
     
      
      For Each ws In ThisWorkbook.Worksheets
        If ws.Name <> sUtente  and ws.name <> "foglio visibile a tutti " Then
           
           ws.Visible = xlSheetVeryHidden
        End If


  • conflitti
    di Vannisca86 (utente non iscritto) data: 29/01/2014 17:09:38

    SAlve, ho da fare una domanda, ma creando questo file e ammesso che tutti quanti lavorano sullo stesso file insieme nelllo stesso tempo, si creano conflitti ???? c'è un modo per evitare questi conflitti??