martedì 15 aprile 2008

Eliminare i nomi da un File Excel

Oggi mi sono imbattuto in questo strano errore:

"una formula del foglio di lavoro presenta uno o più riferimenti non validi".

le formule nelle celle non hanno nessun problema e dunque non è chiaro il motivo di questo fastidioso errore.
Poi ho capito: il file nasceva da un vecchio file excel che è stato modificato: sono presenti molti nomi non più validi.

Andate su Inserisci -> Nome - > Definisci.

si apre una finestra di popup con una grande quantità di nomi assolutamente incomprensibili che si sono cumulati nel tempo: avendo eliminato i fogli e avendo spostato il file stesso sono ora inutilizzabili e errati e creano errori a ogni piè sospinto.

E' necessario eliminarli ma sono molti e la procedura è molto lenta, per fortuna su Internet qualcuno ha già sviluppato una piccola macro per eliminare tutti i nomi senza fatica:

Sub DeleteAllNames()
Dim x%
For x = ActiveWorkbook.Names.Count To 1 Step -1
Range(ActiveWorkbook.Names(x).Name).Name.Delete
Next
End Sub

fonte: http://www.mrexcel.com/archive2/18700/21176.htm

copiate la macro all'interno del file di lavoro (o del vostro file personal.xls) e eseguitela. i fastidiosi errori sono eliminati per sempre!

per vedere la procedura per utilizzare la macro, visionate il filamto all'indirizzo
http://www.terzaghi.it/excel/001tutorial_animati.htm


-----------------------
Update:
-----------------------

Un gentilissimo Matteo Ongari mi invia questa mail:
lo ringrazio tantissimo per la gentile segnalazione e rilevo la sua macro che sembra funzionare meglio della mia. E' strano che abbia trovato la mia macro non funzionate (potrebbe essere un problema delle versioni di Excel, io la ho sviluppata per 2003, credo che il sig. Ongari la abbia scritta su una versione di Excel più recente). Comunque sia complimenti a lui e lo ringrazio per la gentilissima segnalazione:
Qui il testo della sua mail:

Nel fare una ricerca per un problema da risolvere con excel mi sono imbattutto in un vostro consiglio.
Ho provato la macro proposta ma non funzionava, quindi mi sono permesso di modificarla.
Vi invio la versione corretta e testata sperando che possa essere di pubblico utilizzo

Sub DeleteAllNames()
Dim x%
For x = ActiveWorkbook.Names.Count To 1 Step -1
ActiveWorkbook.Names(x).Delete
Next
End Sub

distinti saluti

Matteo Ongari

1 commento:

fable ha detto...

Grazie questa routine mi è stata davvero utile !