Bloccare macro automatiche
Hai un problema con Excel? 
Bloccare macro automatiche
di Luca (utente non iscritto) data: 08/12/2013 13:14:46
Ciao a tutti. È la seconda volta che scrivo sul forum e spero di arrivare anche ora a una soluzione.
Semplificando ho un file excel che una volta selezionati dei componenti mi mostra i prezzi. I prezzi vengono presi da un secondo foglio nella stessa cartella di lavoro. Per impedire la modifica, ogni foglio e l'intera cartella sono protetti, inoltre il foglio con i prezzi è nascosto in modalità veryhidden. Ogni macro deve quindi prima rimuovere e poi ripristinare la protezione. Per consentirmi di eseguire delle modifiche ho 2 macro una che toglie la protezione e mostra i fogli nascosti e l'altra che nasconde i fogli e mette la protezione. Vengono però eseguite delle operazioni legate all'evento BeforeSave e anche qui prima toglie e poi ripristina la protezione. In pratica mentre vengono fatte delle modifiche ogni volta che si salva i fogli vengono protetti rendendo l'operazione fastidiosa.
Vorrei quindi sapere se è possibile impedire l'esecuzione della macro legata all'evento BeforeSave quando si eseguono delle modifiche. L'obiettivo finale è di collegare tutto a dei pulsanti utilizzabili anche da chi non sa nulla di vba.
Grazie
di scossa data: 08/12/2013 13:47:20
Non mi è chiaro il contesto della tua richiesta, ma:
"Ogni macro deve quindi prima rimuovere e poi ripristinare la protezione. "
non è necessariamente vero.
Se in apertura (e chiusura) del file proteggi i figli con l'attributo userinterfaceonly puoi evitare di togliere e rimettere la protezione in ogni macro.
Ovviamente tutto il codice nel file dovrebbe essere scritto in modo "corretto" .....
Private Sub Workbook_Open()
Foglio1.Protect "pippo", userinterfaceonly:=True
End Sub
|
di Luca (utente non iscritto) data: 08/12/2013 15:40:03
Non conoscevo l'istruzione "userinterfaceonly:=True". Così posso alleggerire di molto il mio codice oltre a risolvere il problema.
Fortunatamente ho usato delle macro pubbliche quindi mi basta togliere l'istruzione che le richiama.
Grazie mille.
Vuoi Approfondire?