Non ti seguo...
Avevi gia' risolto il problema di creare in un foglio Indice il contenuto di alcune celle degli altri fogli
Adesso (per quello che avevo capito) si trattava di voler creare Indice su un file diverso da quello da cui si devono prendere i dati.
Per questo il mio suggerimeto era stato:
Se vuoi che la macro crei il riepilogo su un secondo file, allora apri anche il primo file; poi sul secondo file scrivi le formule che puntano al file giusto, al foglio giusto e alla cella giusta
Guarda con quale sintassi la formula "punta" al primo file e aggiungi la stringa che manca alle formule che crei.
Es, invece che Formula = "=" & SH.Name & "!O2"
- Codice: Seleziona tutto
.Formula = "='[NomeDelFile.xlsm]" & SH.Name & "!O2"
Da quello che dici, il "secondo file" si chiama Indice.xlsm, e il "primo file" si chiama Prova_2.xlsm
Quindi, seguendo le vecchie istruzioni:
-metti su Indice.xlsm una formula che punta a Foglio1 di Prova_2; la formula sara' vista come
- Codice: Seleziona tutto
=[Prova_2.xlsm]Foglio1!$O$2
-se pensi di dover lavorare anche con Prova_2 chiuso, chiudi prova_2; la formula ora e' vista come
- Codice: Seleziona tutto
='C:\Percorso\[Prova_2.xlsm]Foglio1'!$O$2
Quindi nella tua macro, invece di .Formula = "=" & SH.Name & "!O2" dovrai inserire
.Formula = "='C:\Percorso\[Prova_2.xlsm]" & SH.Name & "'!O2"(nota un '=apice prima del !)
C'E' TUTTAVIA da aggiungere che la macro che inserisce queste formule
1) va eseguita con Prova_2.xlsm aperto
2) deve essere modificata rispetto alla
Sub elenca che avevi realizzato perche' il file su cui lavora (Indice.xlsm) e' diverso dal file a cui bisogna far riferimento (Prova_2.xlsm)
Insomma il codice da inserire sul file Indice.xlsm e' di questo tipo:
- Codice: Seleziona tutto
Sub elencaExt()
Dim SH As Worksheet, WB2 As Workbook
'
Set WB2 = Workbooks("Prova_2.xlsm") '<<< Il file di cui preparare il Riepilogo
riga = 2
For Each SH In WB2.Sheets
If SH.Name <> "Indice" Then
Cells(riga, 1).Value = SH.Name
If SH.Name = "Foglio5" Or SH.Name = "Foglio6" Then
Cells(riga, 2).Formula = "='C:\PercorsoReale\[Prova_2.xlsm]" & SH.Name & "'!P2"
Else
Cells(riga, 2).Formula = "='C:\PercorsoReale\[Prova_2.xlsm]" & SH.Name & "'!O2"
End If
riga = riga + 1
End If
Next
End Sub
Modifica ='C:\PercorsoReale\[Prova_2.xlsm]" per adattare al tuo percorso e al tuo NomeFile
Ciao