Nell'articolo di oggi vogliamo evidenziare una questione che si può presentare a chi inserisce codice VBA in progetti destinati all'usi di altri utenti. Per questioni di sicurezza, potrebbe essere utile proteggere i fogli di lavoro, ma a quel punto, le macro VBA potrebbero non funzionare più correttamente.... e allora? una soluzione c'è e anche piuttosto semplice.
Basta rimuovere via codice la protezione come prima operazione della sub o funzione VBA e ripristinarla, sempre via codice, alla fine di tutte le operazioni della macro.
Il codice per rimuovere la protezione da foglio è
Sheets("nomeFoglio").Unprotect Password:="password"
Dove, naturalmente, a nomeFoglio bisogna sostituire il nome del foglio da cui rimuovere la protezione e a password la password eventualmente utilizzata per proteggere il foglio. Se non avete usato una password, dovete omettere del tutto l'argomento Password.
Se la macro e la protezione coinvolgono più fogli, è possibile scrivere un ciclo for per rimuovere la protezione da tutti i fogli. Naturalmente, in questo caso, i fogli devono essere protetti con la stessa password o senza password.
For Each foglio In Sheets
foglio.Unprotect
Next
In modo molto simile, è possibile scrivere un ciclo for che reimposta la protezione
For Each foglio In Sheets
foglio.Protect
Next