IALweb Homepage
Forum Home Forum Home > MS Office > Microsoft Office > Microsoft Excel
  New Posts New Posts RSS Feed - [RISOLTO] Protezione file in base all' utente
  FAQ FAQ  Forum Search   Events   Register Register  Login Login

REGISTRATEVI su IALWeb forum! E' facile e veloce! Potrete consultare tutte le sezioni del forum senza restrizioni e scrivere per dare o richiedere aiuto.
Votaci in Net-Parade

[RISOLTO] Protezione file in base all' utente

 Post Reply Post Reply Page  123>
Author
Message
il_betto View Drop Down
Veterano
Veterano
Avatar

Joined: 13/Giu/2011
Status: Offline
Points: 2712
Post Options Post Options   Thanks (0) Thanks(0)   Quote il_betto Quote  Post ReplyReply Direct Link To This Post Topic: [RISOLTO] Protezione file in base all' utente
    Posted: 07/Nov/2017 at 17:31
Ciao a Tutti,

ho il seguente file excel:



se l' utente che lo apre si chiama PIPPO o PLUTO, a questo utente è concesso di fare tutto.

per gli altri utenti deve essere inibita la possibilità di:

- modificare le celle
- Eliminare Fogli
- Eliminare Colonne


con il codice che ho scritto succede questo:

- nel caso di un utente diverso dai 2 sopra-citati,
all' apertura del file se tenta di modificare le celle,
appare una mascherina che avvisa che il foglio è protetto e occorre rimuovere la protezione.
Se l' utente schiaccia il pulsante "Rimuovi protezione foglio" allora si ritrova abilitato e questo non va bene.
Sono ricorso alla macro in quanto non voglio proteggere le celle / i fogli tramite password.

- per la protezione dei fogli, in ciascun foglio ho inserito un codice trovato in internet,
insieme ad un modulo generico,
ma ottengo l' errore che l' OnTime di Application non è riuscito.

- per impedire l' eliminazione di colonne ho usato il codice riportato, spero non sia ridondante ...

Grazie in anticipo x l' aiuto !!!


Edited by il_betto - 20/Nov/2017 at 10:58
Back to Top
dodo47 View Drop Down
Moderatore
Moderatore
Avatar

Joined: 29/Dic/2008
Location: Italy
Status: Offline
Points: 9389
Post Options Post Options   Thanks (0) Thanks(0)   Quote dodo47 Quote  Post ReplyReply Direct Link To This Post Posted: 07/Nov/2017 at 19:02
Originally posted by il_betto il_betto wrote:

......ma ottengo l' errore che l' OnTime di Application non è riuscito......

perchè usi “.....” al posto di "...."

ciao
domenico
win 10- office 2010
Back to Top
dodo47 View Drop Down
Moderatore
Moderatore
Avatar

Joined: 29/Dic/2008
Location: Italy
Status: Offline
Points: 9389
Post Options Post Options   Thanks (0) Thanks(0)   Quote dodo47 Quote  Post ReplyReply Direct Link To This Post Posted: 08/Nov/2017 at 11:10
Ciao
vedi se l'allegato va bene. Ho fatto dei cambiamenti contrassegnati con '<<<<<<<<<<<<< e, al posto di application.username ho utilizzato Environ$("username").

la differenza tra i due è riportata dall'help:
"'....Environ("username") is the user name which you log into Windows with.
Application.UserName is the user name which is set by the user when they run the program for the first time or whatever it was if you go to TOOLS > OPTIONS > GENERAL and set it under User Name....."

Mi resta comunque il dubbio sul fatto che inibisci gli ID 293 e 294 per i motivi esposti via MP.
Comunque sul before close li devi riabilitare.

Ma fossi in te farei molte prove quando il file è aperto e gli ID sono disabilitati, aprendo un qualsiasi altro file per controllare che tali inibizioni non si riperquotano anche su tali altri file (magari anche con altri utenti che usano lo stesso excel.exe

Saluti



Edited by dodo47 - 08/Nov/2017 at 11:48
domenico
win 10- office 2010
Back to Top
il_betto View Drop Down
Veterano
Veterano
Avatar

Joined: 13/Giu/2011
Status: Offline
Points: 2712
Post Options Post Options   Thanks (0) Thanks(0)   Quote il_betto Quote  Post ReplyReply Direct Link To This Post Posted: 08/Nov/2017 at 14:06
Ciao dodo,

Grazie infinite x i preziosissimi consigli !!

  • Ho provato con Ctrl +, Ctrl - ma non succede nulla ...

  • Ho cambiato gli apicetti e l' inibizione sui fogli va alla grande !!
  • Anche Environ("username")  lo trovo molto giusto !!

Mi rimane un problema: Ouch

Ho visto che se non sono PIPPO o PLUTO e tento di modificare una cella,
mi appare il seguente Warning:



però se schiaccio il pulsante Revisione / Rimuovi protezione foglio, allora posso inserire un valore diverso.
Ciò non va bene.

C' è un modo per inibire anche la voce Rimuovi protezione foglio,
oppure occorre inibire l' opzione di salvataggio ??

Grazie mille !!!



Edited by il_betto - 08/Nov/2017 at 14:46
Back to Top
il_betto View Drop Down
Veterano
Veterano
Avatar

Joined: 13/Giu/2011
Status: Offline
Points: 2712
Post Options Post Options   Thanks (0) Thanks(0)   Quote il_betto Quote  Post ReplyReply Direct Link To This Post Posted: 08/Nov/2017 at 14:39
Ciao dodo,

ho visto adesso che mettendo PIPPO o PLUTO non fa più cancellare i fogli ed inserire le colonne anche a loro ...

Quindi ho messo il codice:

Private Sub Workbook_BeforeClose(Cancel As Boolean)

Dim ws As Worksheet
Dim xBarControl As CommandBarControl

Application.ScreenUpdating = False
Application.EnableEvents = False

For Each ws In Worksheets

       For Each xBarControl In Application.CommandBars.FindControls(ID:=293) ' delete - from row
           xBarControl.Enabled = True
       Next
       For Each xBarControl In Application.CommandBars.FindControls(ID:=294) ' delete - from column
           xBarControl.Enabled = True
       Next

Next ws

Application.EnableEvents = True
Application.ScreenUpdating = True


End Sub

rimane ancora il problema dei fogli Cry


Edited by il_betto - 08/Nov/2017 at 14:46
Back to Top
il_betto View Drop Down
Veterano
Veterano
Avatar

Joined: 13/Giu/2011
Status: Offline
Points: 2712
Post Options Post Options   Thanks (0) Thanks(0)   Quote il_betto Quote  Post ReplyReply Direct Link To This Post Posted: 08/Nov/2017 at 15:08
Per inibire il pulsante "Rimuovi protezione foglio", ho provato così ma ottengo errore:

Private Sub Workbook_Open()

Dim ws As Worksheet
Dim xBarControl As CommandBarControl

Application.ScreenUpdating = False
Application.EnableEvents = False

For Each ws In Worksheets
    If UCase(Environ$("username")) = "PIPPO" Or UCase(Environ$("username")) = "PLUTO" Or UCase(Environ$("username")) = "PAPERINO" > 0 Then
       ws.Unprotect
    Else
       ws.Protect
       For Each xBarControl In Application.CommandBars.FindControls(ID:=293) ' delete - from row
           xBarControl.Enabled = False
       Next
       For Each xBarControl In Application.CommandBars.FindControls(ID:=294) ' delete - from column
           xBarControl.Enabled = False
       Next
    End If
Next ws

If Not UCase(Environ$("username")) = "PIPPO" Or Not UCase(Environ$("username")) = "PLUTO" Or Not UCase(Environ$("username")) = "PAPERINO" > 0 Then
   Application.CommandBars("Worksheet menu bar").Controls("Strumenti").Controls("Protezione").Controls("Rimuovi protezione foglio").Enabled = False
End If

Application.EnableEvents = True
Application.ScreenUpdating = True

End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)

Dim ws As Worksheet
Dim xBarControl As CommandBarControl

Application.ScreenUpdating = False
Application.EnableEvents = False
Application.CommandBars("Worksheet menu bar").Controls("Strumenti").Controls("Protezione").Controls("Rimuovi protezione foglio").Enabled = True

For Each ws In Worksheets

       For Each xBarControl In Application.CommandBars.FindControls(ID:=293)
           xBarControl.Enabled = True
       Next
       For Each xBarControl In Application.CommandBars.FindControls(ID:=294)
           xBarControl.Enabled = True
       Next    

Next ws

Application.EnableEvents = True
Application.ScreenUpdating = True

End Sub



Edited by il_betto - 08/Nov/2017 at 15:09
Back to Top
il_betto View Drop Down
Veterano
Veterano
Avatar

Joined: 13/Giu/2011
Status: Offline
Points: 2712
Post Options Post Options   Thanks (0) Thanks(0)   Quote il_betto Quote  Post ReplyReply Direct Link To This Post Posted: 08/Nov/2017 at 16:32
per inibire o permettere la cancellazione dei fogli,

a seconda se sono PIPPO o no,

ho messo il codice contrassegnato in verde ...

ma per il momento no good news 

Ouch

Back to Top
dodo47 View Drop Down
Moderatore
Moderatore
Avatar

Joined: 29/Dic/2008
Location: Italy
Status: Offline
Points: 9389
Post Options Post Options   Thanks (0) Thanks(0)   Quote dodo47 Quote  Post ReplyReply Direct Link To This Post Posted: 08/Nov/2017 at 16:36
...[C U T] per accertamenti  

Edited by dodo47 - 08/Nov/2017 at 16:36
domenico
win 10- office 2010
Back to Top
dodo47 View Drop Down
Moderatore
Moderatore
Avatar

Joined: 29/Dic/2008
Location: Italy
Status: Offline
Points: 9389
Post Options Post Options   Thanks (0) Thanks(0)   Quote dodo47 Quote  Post ReplyReply Direct Link To This Post Posted: 08/Nov/2017 at 17:25
Ciao
il messaggio di foglio/cella protetti, se mi loggo con la mia userid (che naturalmente ho inserito nell'open della tua macro) a me non appare.

Tu dovresti usare gli eventi  Workbook_Open, Workbook_Close, Workbook_Activate e WorkBook_Deactivate per disabilitare i controlli e per ripristinarli.

Sono in attesa di maggiori conferme da microsoft.

saluti
domenico
win 10- office 2010
Back to Top
dodo47 View Drop Down
Moderatore
Moderatore
Avatar

Joined: 29/Dic/2008
Location: Italy
Status: Offline
Points: 9389
Post Options Post Options   Thanks (0) Thanks(0)   Quote dodo47 Quote  Post ReplyReply Direct Link To This Post Posted: 08/Nov/2017 at 20:47
ciao
ti riporto la risposta al mio dubbio sull'inibizione degli ID
Originally posted by microsoft microsoft wrote:

......Per capire meglio, se io ho aperto un documento > disabilitato gli ID - se un altro utente apre un documento qualsiasi si trova le funzioni disabilitate?

Sì, esattamente così! Ovviamente, un altro utente che utilizza la sua propria Excel non saprà nulla della disabilitazione. ;=)

Quindi dovresti disabilitare il controllo con l'evento Workbook.Activate e riabilitarlo con l'evento  Workbook.Deactivate ad esempio:

'=========>>
Option Explicit

'--------->>
Private Sub Workbook_Activate()
    Dim xBarControl As CommandBarControl

    For Each xBarControl In Application.CommandBars.FindControls(ID:=293)
        xBarControl.Enabled = False
    Next xBarControl
End Sub

Private Sub Workbook_Deactivate()
    Dim xBarControl As CommandBarControl

    For Each xBarControl In Application.CommandBars.FindControls(ID:=293)
        xBarControl.Enabled = True
    Next xBarControl
End Sub

saluti



Edited by dodo47 - 08/Nov/2017 at 20:47
domenico
win 10- office 2010
Back to Top
 Post Reply Post Reply Page  123>
  Share Topic   

Forum Jump Forum Permissions View Drop Down

Forum Software by Web Wiz Forums® version 10.17
Copyright ©2001-2013 Web Wiz Ltd.

This page was generated in 0,047 seconds.