Graeme ha una cartella di lavoro che ha un numero elevato (120+) intervalli denominati definiti al suo interno. Vorrebbe copiare i nomi e le definizioni degli intervalli in una cartella di lavoro diversa. Pertanto, dopo la copia, l’intervallo denominato MyRange1 che si riferisce all’intervallo C7: H22 nella cartella di lavoro originale esisterà nella cartella di lavoro di destinazione e farà riferimento allo stesso intervallo, nella cartella di lavoro di destinazione.

Nient’altro dovrebbe essere copiato dalla cartella di lavoro originale alla destinazione, solo i nomi e le definizioni degli intervalli.

Il modo più semplice per farlo è con una macro che passi attraverso ciascuno dei nomi definiti e copia la definizione del nome nella cartella di lavoro di destinazione. Ecco un esempio:

Sub CopyNames()

Dim Source As Workbook     Dim Target As Workbook     Dim n As Name

Set Source = ActiveWorkbook     Set Target = Workbooks("Book2.xlsx")



For Each n In Source.Names         Target.Names.Add Name:=n.Name, RefersTo:=n.Value     Next End Sub

Si noti che la maggior parte del lavoro nella macro viene eseguita nel ciclo For Each che esegue tutti i nomi definiti. Crea il nome nella cartella di lavoro di destinazione e gli assegna la stessa assegnazione che aveva nella cartella di lavoro di origine (contenuta nella proprietà Value).

Si noti che, per impostazione predefinita, gli intervalli denominati includono il nome del foglio di lavoro nella proprietà Value. Se la cartella di lavoro di origine ha un intervallo denominato che fa riferimento, ad esempio, a Foglio4 e non è presente alcun Foglio4 nella cartella di lavoro di destinazione, l’aggiunta del nome non riesce. La macro non genera un errore; semplicemente non crea il nuovo intervallo denominato. La soluzione è (a) assicurarsi che la cartella di lavoro di destinazione contenga gli stessi nomi di fogli della cartella di lavoro di origine o (b) modificare la macro in modo che riconosca che ci sono fogli mancanti e intraprenda l’azione appropriata.

Se si preferisce non creare una macro, il metodo più semplice potrebbe essere quello di copiare i fogli di lavoro dalla cartella di lavoro di origine a una cartella di lavoro di destinazione.

Excel generalmente copia gli intervalli denominati insieme ai fogli di lavoro. L’unica volta che questo non sarebbe un approccio soddisfacente è se la cartella di lavoro di destinazione ha già fogli di lavoro con gli stessi nomi di quei fogli di lavoro che potresti voler copiare. In tal caso, sarebbe meglio utilizzare l’approccio 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 (8811) si applica a Microsoft Excel 2007, 2010, 2013, 2016, 2019 ed Excel in Office 365. Puoi trovare una versione di questo suggerimento per l’interfaccia del menu precedente di Excel qui: