Probabilmente ti è capitato questo: apri una cartella di lavoro, guardi intorno ad alcuni fogli di lavoro e quindi chiudi la cartella di lavoro. Come parte della chiusura, Excel ti chiede se desideri salvare le modifiche, ma non hai apportato alcuna modifica, ti sei solo guardato intorno. Cosa succede?

Internamente, Excel mantiene ciò che viene comunemente chiamato “flag sporco”. Questo flag viene impostato ogni volta che apporti una sorta di modifica a una cartella di lavoro.

Ogni volta che si salva la cartella di lavoro, il flag viene cancellato. Se il flag è impostato quando si chiude la cartella di lavoro, Excel chiede se si desidera salvare la cartella di lavoro.

Il flag sporco può ovviamente essere impostato se si apportano modifiche esplicite a una cartella di lavoro, come la modifica di una cella o la modifica della struttura della cartella di lavoro in qualche modo. Tuttavia, può anche essere impostato anche se non fai nulla di esplicito. A volte, Excel fa qualcosa che influisce sul contenuto della cartella di lavoro solo in virtù del fatto che l’hai aperta. Questo imposta il flag sporco e quindi attiva la richiesta di salvataggio.

Due grandi colpevoli nell’effettuare tali modifiche automatiche sono le funzioni del foglio di lavoro OGGI e ORA. Restituiscono rispettivamente la data e l’ora del sistema. Quando si apre per la prima volta una cartella di lavoro, vengono aggiornati nel normale corso del ricalcolo. Poiché rappresentano un cambiamento, Excel imposta il flag sporco. Questi sono solo due possibili colpevoli; ci sono altre funzioni che possono avere lo stesso “questa cartella di lavoro è stata modificata”

effetto. Un elenco non esaustivo include INDIRECT, OFFSET, RAND e RANDBETWEEN.

Il flag sporco può anche essere impostato automaticamente se la cartella di lavoro include collegamenti a dati su altri fogli di lavoro. Excel recupera i dati, che rappresentano una modifica alla cartella di lavoro appena aperta. Excel non imposta il flag sporco se navighi semplicemente nella cartella di lavoro, facendo cose come selezionare celle o passare a un foglio di lavoro diverso.

Un modo per aggirare il problema è rimuovere tutto ciò che sta causando modifiche nella cartella di lavoro. Per la maggior parte delle persone, questo non è pratico.

Puoi anche aggiungere una macro automatica che verrà eseguita appena prima della chiusura della cartella di lavoro, come la seguente, che dovrebbe far parte dell’oggetto ThisWorkbook:

Private Sub Workbook_BeforeClose(Cancel As Boolean)

ActiveWorkbook.Saved = True End Sub

Questa macro non fa altro che cancellare il flag sporco (la proprietà Saved). Anche se questo approccio funzionerà, il suo utilizzo comporta un enorme rischio. Con la macro in posizione, Excel non ti chiederà mai se desideri salvare le modifiche all’uscita, anche se sono state apportate modifiche legittime alla cartella di lavoro. Pertanto, dovresti ricordarti di salvare in modo esplicito qualsiasi cosa nella cartella di lavoro ogni volta che apporti modifiche. Se non lo fai, potresti perdere parte del tuo lavoro.

Una variazione di questo approccio, meno spietato dei cambiamenti dimenticati, consiste nel rendere effettivamente la parte macro della procedura Workbook_Open per l’oggetto ThisWorkbook:

Private Sub Workbook_Open()

ActiveWorkbook.Saved = True End Sub

Ora Excel apre la cartella di lavoro, ricalcola (incluse le modifiche in base a funzioni come OGGI e ADESSO) e quindi cancella il contrassegno sporco. Se chiudi subito, non ti viene chiesto se desideri salvare le modifiche. Ti verrà chiesto se desideri salvare le modifiche, tuttavia, se apporti modifiche dopo che questa macro è stata eseguita, in altre parole, dopo che il foglio di lavoro è stato completamente aperto.

Oltre a ricalcolare automaticamente le funzioni che impostano il flag sporco, è anche possibile che la cartella di lavoro contenga una o due macro che vengono eseguite automaticamente all’apertura. Se la macro sta apportando una sorta di modifica nella cartella di lavoro, imposterà naturalmente il flag sporco. Puoi controllare l’editor VBA per vedere se questo è il caso.

_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 (12352) si applica a Microsoft Excel 2007, 2010, 2013 e 2016.

È possibile trovare una versione di questo suggerimento per la vecchia interfaccia del menu di Excel qui: Saving Non-Existent Changes.