Apertura sempre di una cartella di lavoro modificabile (Microsoft Excel)
Patrick si chiede come impedire a Excel di aprire cartelle di lavoro in visualizzazione protetta. Vuole che il file si apra in visualizzazione normale in modo che chiunque possa aprirlo, leggerlo e modificarlo.
La risposta dipende interamente da cosa si intende per “visualizzazione protetta”. Se vuoi dire che vuoi che i fogli di lavoro non siano protetti, è relativamente facile farlo tramite una macro. Se stai davvero parlando di ciò che Excel definisce “Visualizzazione protetta”, allora questa è una situazione completamente diversa.
Se vuoi assicurarti che la cartella di lavoro non sia protetta in modo che possa essere modificata una volta aperta, allora una macro semplice come questa potrebbe fare il trucco:
Private Sub Workbook_Open() ThisWorkbook.Unprotect End Sub
Ovviamente questo non toglie la protezione ai singoli fogli di lavoro. Ciò comporta alcuni passaggi in più poiché è necessario scorrere ciascuno dei fogli di lavoro nella cartella di lavoro. Le seguenti macro dovrebbero essere collocate nel modulo ThisWorkbook per la cartella di lavoro di cui non vuoi proteggere i fogli:
Private Sub Workbook_BeforeClose(Cancel As Boolean) ' Reprotect sheets that were protected on open workbook Call ReprotectSheets ' Save changes in ThisWorkbook ThisWorkbook.Save End Sub
Private Sub Workbook_Open() ' Unprotect all sheets in this workbook Call UnprotectAllSheets End Sub
Nota che le macro fanno poco più che chiamare altre macro che fanno il vero lavoro. Queste altre macro possono essere inserite in un modulo standard nella cartella di lavoro:
Public arrProtectedSheets() Sub ReprotectSheets() ' Reprotect worksheets that were protected on WorkbookOpen Dim i As Integer For i = LBound(arrProtectedSheets) To UBound(arrProtectedSheets) ThisWorkbook.Worksheets(arrProtectedSheets(i)).Protect Next i End Sub
Sub UnprotectAllSheets() ' Unprotect all worksheets in this workbook Dim wks As Object Dim i As Integer i = 0 For Each wks In ThisWorkbook.Sheets If IsSheetProtected(wks) Then ' Remember names of protected sheets in order ' to reprotect them on WorkbookClose ReDim Preserve arrProtectedSheets(i) arrProtectedSheets(i) = wks.Name i = i + 1 ' Unprotect sheet wks.Unprotect End If Next wks End Sub
Private Function IsSheetProtected(ByRef wks As Excel.Worksheet) As Boolean ' Function returns TRUE If Worksheetsheet Is Protected With wks IsSheetProtected = (.ProtectContents Or _ .ProtectScenarios Or .ProtectDrawingObjects) End With End Function
L’idea alla base della macro UnprotectAllSheets è che passa attraverso ciascuno dei fogli di lavoro nella cartella di lavoro e, se è protetto (determinato nella macro IsSheetProtected), il nome del foglio di lavoro viene memorizzato in una matrice. Il contenuto della matrice viene quindi utilizzato nella macro ReprotectSheets per proteggere nuovamente quei fogli di lavoro. Questo approccio presuppone, ovviamente, che non vi siano password associate a nessuno dei fogli di lavoro protetti.
Se in realtà vuoi assicurarti che la vera “Visualizzazione protetta”
è spento, questa è una storia diversa. Le impostazioni per Visualizzazione protetta sono controllate sistema per sistema nel Centro protezione. Puoi vedere le impostazioni seguendo questi passaggi:
-
Visualizza il scheda sviluppatore della barra multifunzione.
-
Fare clic su Protezione macro nel gruppo Codice. Excel visualizza la finestra di dialogo Centro protezione.
-
Sul lato sinistro della finestra di dialogo fare clic su Visualizzazione protetta. (Vedi figura 1.)
Le impostazioni effettive di Protection View disponibili dipendono dalla versione di Excel in uso. Come accennato, queste impostazioni sono controllate a livello di sistema; non vengono gestiti cartella di lavoro per cartella di lavoro. Il risultato è che non possono essere aggirati dal codice macro. Se potessero, renderebbe un sistema completamente vulnerabile al codice presente in una cartella di lavoro che viene aperto: torneremmo ai giorni dei virus macro che erano comuni con alcune versioni precedenti dei prodotti Office.
Ulteriori informazioni sul funzionamento delle impostazioni di Visualizzazione protetta possono essere trovate su questo sito Web Microsoft:
https://support.office.com/en-us/article/what-is-protected-view-d6f09ac7-e6b9-4495-8e43-2bbcdbcb6653?ocmsassetID=HA010355931&CorrelationId=fce5243e-6c41-4865-89e9-530f125ea252&ui=en-US&rs=en-US&ad=US
L’apertura o meno di una cartella di lavoro in Visualizzazione protetta dipende dalle impostazioni di sistema di un utente. Ciò significa che il controllo di ciò che si apre dipende interamente dal singolo utente e non può essere “forzato” da un autore della cartella di lavoro. Ci sono modi, tuttavia, per mitigare l’impatto di ciò e hanno a che fare con la fiducia. Nota che a sinistra della finestra di dialogo Centro protezione ci sono tre impostazioni che controllano questo rispetto alle cartelle di lavoro:
Editori attendibili. * Le cartelle di lavoro degli editori elencati in quest’area sono affidabili e si apriranno direttamente, ignorando la Visualizzazione protetta.
Percorsi attendibili. * Le cartelle di lavoro archiviate nelle posizioni elencate in quest’area sono affidabili e si apriranno direttamente, ignorando la visualizzazione protetta.
Documenti attendibili. * Le singole cartelle di lavoro annotate in quest’area sono affidabili e si apriranno direttamente, ignorando la visualizzazione protetta.
Per la tua cartella di lavoro, quindi, per bypassare la visualizzazione protetta, devi essere un editore attendibile, la cartella di lavoro deve essere archiviata in un percorso attendibile o deve essere annotata nel sistema come documento attendibile.
Tutte queste impostazioni sono, ancora una volta, sotto il controllo dell’utente e non possono essere modificate tramite codice macro.
_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 (12873) si applica a Microsoft Excel 2007, 2010, 2013, 2016, 2019 e Excel in Office 365.