Limitare la posizione di utilizzo di una cartella di lavoro (Microsoft Excel)
Shay lavora con un’organizzazione di volontari e hanno sviluppato una cartella di lavoro Excel specifica per i loro volontari. Non vogliono che venga copiato o condiviso con persone esterne, quindi Shay si chiede se esiste un modo per proteggere la cartella di lavoro in modo che funzioni solo per un computer specifico e nessun altro.
Esistono modi per provare a rafforzare la sicurezza delle cartelle di lavoro, ma ci sono considerazioni da tenere in considerazione prima di decidere il modo migliore.
Renditi conto che praticamente qualsiasi approccio arrecherà disturbo agli utenti in un modo o nell’altro. Inoltre, l’approccio che adotti può dipendere dal fatto che gli utenti siano esclusivamente sulla tua rete interna o siano volontari non connessi alla tua rete.
Un modo semplice per iniziare è semplicemente proteggere con password la cartella di lavoro e quindi far conoscere la password ai volontari. Il duplice svantaggio di questo è che qualsiasi password trasmessa ai volontari continuerà a funzionare anche dopo che non sono più volontari e per chiunque a cui i volontari potrebbero passare il libro di esercizi. Questo è vero anche se crei una password individuale per ogni volontario.
Qualsiasi altro approccio si baserebbe sull’aggiunta di macro alla cartella di lavoro.
Un ottimo modo è che la macro controlli il nome del computer su cui viene aperta la cartella di lavoro. Questo è un esempio di una tale macro:
Private Sub Workbook_Open() Dim sComputerName As String Dim sPossible As String Dim sTemp As String sPossible = "[NEWDELL][Computer1][Order Entry][Dan's System]" sPossible = sPossible & "[Computer2][Computer3]" sComputerName = Environ("computername") sTemp = "[" & sComputerName & "]" If InStr(sPossible, sTemp) Then MsgBox "Welcome to the workbook." Else MsgBox "You are not authorized to open this workbook." Workbooks(ActiveWorkbook.Name).Close SaveChanges:=False End If End Sub
L’idea alla base della macro è che dovresti definire, nella stringa sPossible, i nomi di ogni computer su cui è consentito aprire la cartella di lavoro. Tutto quello che devi fare è assicurarti di avere i nomi delle macchine scritti esattamente correttamente e racchiuderli tra parentesi quadre nella stringa sPossible. La funzione Environ restituisce il nome effettivo del computer, viene inserito nella variabile sTemp tra parentesi, quindi la funzione InStr viene utilizzata per vedere se è nell’elenco delle macchine possibili.
Se lo è, viene visualizzata una finestra di messaggio; in caso contrario, viene visualizzata una finestra di messaggio e la cartella di lavoro viene chiusa senza salvare le modifiche.
Se preferisci qualcosa di anche un po ‘più sicuro, potresti anche usare la funzione Environ per restituire “http://username-password.com/[username]”
valore, che ti darebbe il nome utente per l’account utilizzato sul computer.
Questo approccio macro è relativamente semplice, ma richiede la conoscenza dei nomi dei computer (e / o dei nomi utente) prima che possa funzionare correttamente. Si presume inoltre che l’utente non conosca abbastanza Excel per ignorare le macro tenendo premuto il tasto Maiusc all’avvio del programma. Se sospetti che l’utente sappia così tanto, dovrai eseguire più passaggi, come i seguenti:
-
Assicurati che un singolo foglio di lavoro sia visibile nella cartella di lavoro. Tutti gli altri fogli di lavoro dovrebbero essere “molto nascosti” in modo che l’utente non possa visualizzarli utilizzando i passaggi normali.
-
Se la macro determina che l’utente è autorizzato, nascondi il singolo foglio di lavoro visibile e rendi visibili tutti i fogli di lavoro “molto nascosti”.
-
Quando la cartella di lavoro è chiusa, invertire il processo e nascondere tutti i fogli di lavoro (impostare la proprietà Visible di ciascuno di essi su xlSheetVeryHidden) e rendere nuovamente visibile il singolo foglio di lavoro.
L’utilizzo di questo approccio assicura che anche se l’utente disabilita le macro (tenendo premuto il tasto Maiusc durante l’avvio), non possa accedere ai fogli di lavoro perché è necessaria una macro per renderli visibili.
È possibile utilizzare una variazione dell’approccio di cui sopra in modo che invece di affidarsi alla funzione Environ si possa fare in modo che la macro controlli la presenza di un file predeterminato in una particolare posizione nel sistema.
Ciò significa, ovviamente, che è necessario un modo per mettere le mani sul sistema in anticipo per mettere il file corretto nella posizione corretta.
Infine, qualunque sia l’approccio basato su macro che scegli, dovresti assicurarti che il progetto VBA per la cartella di lavoro sia protetto con una password. Questo impedirà a qualcuno di andare a guardare il tuo codice macro per capire cosa sta succedendo con la protezione.
C’è qualcos’altro che devi sempre tenere a mente quando cerchi di proteggere le tue cartelle di lavoro: qualsiasi protezione che metti in atto può sempre essere aggirata con sufficiente conoscenza e pazienza. Se i tuoi utenti non sono così tecnicamente sofisticati, non dovresti avere problemi. Se sanno molto di Excel e delle macro, tuttavia, tutte le scommesse sono disattivate.
_Nota: _
Se desideri sapere come utilizzare le macro descritte in questa pagina (o in qualsiasi altra pagina dei siti ExcelTips), ho preparato una pagina speciale che include informazioni utili.
ExcelTips è la tua fonte di formazione economica su Microsoft Excel.
Questo suggerimento (13666) si applica a Microsoft Excel 2007, 2010, 2013, 2016, 2019 e Excel in Office 365.