Beth si chiede se esiste un modo in cui può determinare se ci sono altre cartelle di lavoro dipendenti dalla cartella di lavoro che ha aperto. Sa come trovare i collegamenti precedenti alla sua cartella di lavoro aperta ma non quelli dipendenti.

Beth ha un nuovo lavoro e non vuole rischiare di modificare una cartella di lavoro senza sapere su quali altri file potrebbe influire.

Se si dispone della cartella di lavoro A e della cartella di lavoro B e la cartella di lavoro B include un collegamento alla cartella di lavoro A, la cartella di lavoro B dipende dalla cartella di lavoro A e la cartella di lavoro A è un precedente della cartella di lavoro B.

Nella cartella di lavoro B puoi facilmente trovare i collegamenti utilizzati nella cartella di lavoro; sapresti che la cartella di lavoro A è un precedente della cartella di lavoro B. Come ha detto Beth, lei sa come trovare queste informazioni.

Nella cartella di lavoro A non è possibile determinare che la cartella di lavoro B ha un collegamento alla cartella di lavoro A e quindi dipende dalla cartella di lavoro A. Pertanto, è possibile apportare modifiche alla cartella di lavoro A che possono, inavvertitamente, influire sulla cartella di lavoro B. Ad esempio, tu potrebbe modificare un intervallo denominato o rinominare un foglio di lavoro o eliminare le informazioni che ritieni non siano più necessarie. La prossima volta che aprirai la cartella di lavoro B, ti verrebbe una brutta sorpresa perché le informazioni da cui dipendeva nella cartella di lavoro A non erano più disponibili.

Alcune modifiche apportate nella cartella di lavoro A potrebbero non influire sulla cartella di lavoro B. Ad esempio, dovresti essere in grado di aggiungere fogli di lavoro, aggiungere intervalli denominati ed eventualmente inserire colonne o righe. In tutti questi casi Excel può adattarsi naturalmente alle modifiche senza influire sulla cartella di lavoro B. Il problema è che non saprai se c’è stato un effetto negativo fino a quando non apri la cartella di lavoro B. E non sapresti nemmeno di aprire la cartella di lavoro B a meno che tu non sapeva in anticipo che esisteva una relazione tra le due cartelle di lavoro.

Un modo per aggirare il problema consiste nell’aprire tutte le cartelle di lavoro a cui riesci a pensare, contemporaneamente, e quindi utilizzare gli strumenti di controllo in Excel per verificare le dipendenze. Questo può funzionare bene se hai un numero molto limitato di cartelle di lavoro sul tuo sistema. Non funziona molto bene se hai molte cartelle di lavoro o se le cartelle di lavoro sono su una rete.

Se hai le tue cartelle di lavoro in una posizione impostata sul tuo sistema locale (tutto in una singola cartella), potresti provare a utilizzare una macro per determinare le dipendenze. I passaggi seguenti attraverso tutte le cartelle di lavoro di Excel in una determinata directory e identificano le cartelle di lavoro collegate alla cartella di lavoro attualmente aperta tramite formule.

Sub DiscoverDependentFiles()

Dim i As Integer     Dim iFile As String     Dim fLink As Variant     Dim sLink As String     Dim myFldr As String     Dim curFile As String

'Change the string here to look     'for a different link / file name     sLink = "[FileA.xls]"

curFile = ThisWorkbook.Name     'Change the string here to look     'in a different folder     myFldr = "C:\Users\User\mySub\"



iFile = Dir(myFldr & "*.xls", vbNormal)

i = 1     'Loop through all of the files in the folder     Do While iFile <> ""

If iFile <> curFile Then             Workbooks.Open Filename:=myFldr & iFile             Set fLink = Cells.Find(What:=sLink, _               After:=ActiveCell, LookIn:=xlFormulas, _               LookAt:=xlPart, SearchOrder:=xlByRows, _               SearchDirection:=xlNext, MatchCase:= _               False, SearchFormat:=False)

If UCase(TypeName(fLink)) <> UCase("Nothing") Then                 Windows(curFile).Activate                 'Record names of dependent files                 'in your open workbook                 Worksheets(1).Range("D" & (i)).Value = _                   ActiveWorkbook.Name                 i = i + 1             End If             Workbooks(iFile).Close False         End If         iFile = Dir     Loop End Sub

Questo approccio dovrebbe funzionare bene in situazioni semplici. In alcuni casi, tuttavia, una macro di questo tipo potrebbe fornire solo una soluzione parziale, poiché i collegamenti possono essere nascosti in numerose posizioni: in nomi di Excel, caselle di testo, grafici e altri oggetti. C’è sempre la possibilità che qualcosa possa essere lasciato deselezionato. Il risultato di ciò è che poiché le modifiche potrebbero influire su altre cartelle di lavoro che dipendono da quella che si sta modificando, è possibile che si desideri eseguire un backup del file della cartella di lavoro prima di apportare modifiche.

_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 (7797) si applica a Microsoft Excel 97, 2000, 2002 e 2003. Puoi trovare una versione di questo suggerimento per l’interfaccia a nastro di Excel (Excel 2007 e versioni successive) qui: