Elenco fogli e link ai rispettivi
Hai un problema con Excel?
Elenco fogli e link ai rispettivi
di Daniele (utente non iscritto) data: 21/12/2016 15:44:43
Ciao a tutti. è la prima volta che scrivo in questo forum ma ho utilizzato spesso i consigli degli esperti che ho trovato nelle varie discussioni. Questo però proprio non riesco a risolverlo. Mi spiego: ho un file excel che ha un grande numero di fogli e spesso questi fogli vengono copiati o cancellati prima della fine del lavoro. Dopo aver creato un elenco (nel primo foglio della cartella) con i nome di tutti i fogli presenti nella cartella di lavoro dovrei linkare ogni nome al rispettivo foglio. Come posso fare?
Questo è il codice che uso per creare l'elenco dei foglio, diciamo il mio indice.
Grazie in anticipo
Daniele
Private Sub CommandButton21_Click()
Dim wks As Worksheet
Dim nome As String, num As Single, i As Single
num = ThisWorkbook.Sheets.Count
i = 1
For Each wks In ActiveWorkbook.Worksheets
Worksheets(1).Cells(i, 3) = wks.Name
i = i + 1
Next
End Sub |
di Luca73 data: 21/12/2016 16:24:10
Usa il registratore e modifica il risultato, per questi dettagli è molto potente.
Sub CommandButton21_Click()
Dim wks As Worksheet
Dim nome As String, num As Single, i As Single
num = ThisWorkbook.Sheets.Count
i = 1
For Each wks In ActiveWorkbook.Worksheets
Worksheets(1).Cells(i, 3) = wks.Name
Worksheets(1).Hyperlinks.Add Anchor:=Worksheets(1).Cells(i, 3), Address:="", SubAddress:= _
wks.Name & "!A1", TextToDisplay:=wks.Name
i = i + 1
Next
End Sub |
di Daniele (utente non iscritto) data: 21/12/2016 16:40:09
Grazie mille per la risposta, ma cosa intendi per "registartore"?
Le righe che hai aggiunto funzionano per tutti i fogli creati nella cartella ma non capisco perchè non linka invece tutti quei fogli che sono stati copiati da altri file excel.
In quei casi mi dice "Riferimento non valido". Cosa posso fare?
Grazie ancora
Daniele
di Luca73 data: 21/12/2016 16:56:00
Prova Così.
Il registratore o icona registra macro è nel pennello sviluppo e tipermette di registrare in VBA quello che fai in Excel.
Ciao
Luca
Sub CommandButton21_Click()
Dim wks As Worksheet
Dim nome As String, num As Single, i As Single
num = ThisWorkbook.Sheets.Count
i = 1
For Each wks In ActiveWorkbook.Worksheets
Worksheets(1).Cells(i, 3) = wks.Name
Worksheets(1).Hyperlinks.Add Anchor:=Worksheets(1).Cells(i, 3), Address:="", SubAddress:= _
wks.Range("A1").Address(0, 0, xlA1, 1), TextToDisplay:=wks.Name
i = i + 1
Next
End S |
di Daniele (utente non iscritto) data: 21/12/2016 17:13:19
Grazie infiniteeeee! funziona! ...
Se posso sfruttare ancora un attimo le tue capacità ti vorrei fare una domanda: Sai per caso il motivo per cui nel file excel che uso e in cui vengono spesso copiati fogli da altri file excel e magari alcuni anche cancellati ne rimanga traccia nella schermata di progettazione VBA anche se sono stati cancellati?
Mi spiego meglio: nel vba project, e più precisamente nella finestra a sinistra dove sono presenti i fogli, ho alcuni di questi che in realtà non esistono più eppure excel me li segna ancora come esistenti.
Spero di essere stato abbastanza chiaro
Grazie milleee per la disponibiltà
Daniele
di Luca73 data: 22/12/2016 09:43:04
No non lo so, sinceramente.
Prova a chiederlo nel forum aprendo una nuova discussione.
Ciao
Luca
di Marius44 data: 22/12/2016 10:04:01
Ciao Daniele
ed un saluto particolare a Luca73
cit.: "ne rimanga traccia nella schermata di progettazione VBA anche se sono stati cancellati?"
Se ho capito bene la domanda, quando "cancelli" un Foglio intendi i dati che ci sono in Excel? In tal caso l'eventuale codice presente nel Modulo VBA (sia riferito allo stesso Foglio di Excel sia nel Modulo Standard) rimane.
Altra cosa è se "elimini" il Foglio Excel. In questo caso il codice presente nel Modulo dello stesso Foglio viene eliminato; ma se il codice che si riferiva a quel Foglio è su un Modulo Standard, rimane e, se richiamato, dà errore.
Sembra un po' ingarbugliato e mi auguro sia comprensibile.
Ciao,
Mario
di Daniele (utente non iscritto) data: 22/12/2016 11:35:38
Ciao Marius e grazie mille per la risposta.
provo a spiegarmi meglio: ho un file che ha 120 sheet (nella schermata "progetto VBA" sono 120) ma in realtà alcuni non esistono...ho controllato che non ci siano sheet nascosti e infatti non ci sono...la riconferma è che il link non mi porta da nessuna parte...eppure non capisco perchè rimangano presenti nella finestra di programmazione tra gli sheet esistenti.
Capisco che sia un casino ma risolvere questa cosa mi aiuterebbe un sacco
Grazie ancora
Daniele
di Marius44 data: 22/12/2016 13:04:10
Ciao Daniele
ma questo file li ha o non li ha "120 sheet"?
SE sono presenti, ancorchè vuoti di dati, nel progetto VBA li vedi tutti a sinistra ma, se non c'è codice, a destra o non vedi nulla o vedi un foglio bianco.
Dici ancora:
"la riconferma è che il link non mi porta da nessuna parte"
Se il link non ti porta da nessuna parte allora il foglio non esiste! Ergo, non sono 120 i fogli del file.
Potresti fare così: allega il tuo file con il Foglio principale, un Foglio "che c'è" e "uno che non c'è". Solo in questo modo si può capire cosa succede.
Ciao,
Mario
di Daniele (utente non iscritto) data: 22/12/2016 14:32:16
Mi piacerebbe allegare il file ma tratta di dati sensibili :(
Il fatto è che il 120 sheet sono presenti solo nella finestra a sinistra nel progetto VBA (e in quei fogli non c'è scritto nessun codice)...nella cartella di lavoro excel invece non ce ne sono 120 e non ci sono fogli bianchi...
Un mistero
Daniele
di Luca73 data: 22/12/2016 14:40:01
Puoi cancellare quello che c'è dentro e inviarlo.
domanda ma vba li vede i fogli oppure no ovvero se fai riferimento a quel foglio (per esempio cambiando nome) VBA agisce o ti dà errore?
Non è che sono nascosti e protetti o qualcosa del genere?
Se fai Click destro e visualizza oggetto cosa succede?
CIao
Luca
di Daniele (utente non iscritto) data: 22/12/2016 17:03:44
Ho allegato il file...anche se non capisco bene dove lo abbia messo :)
Comunque ho cancellato un po di sheet...rimane comunque lo stesso problema nella finestra a sinistra nel progetto VBA
Grazie ancora per l'aiuto
Daniele
di Marius44 data: 24/12/2016 09:14:47
Ciao Daniele
il problema sta nel fatto che chi ha costruito il file ha messo dentro dei fogli che ha nascosto con codice VBA. Fai così: inserisci un modulo standard e incollaci dentro la macro sottostante; per incanto molti fogli che prima non vedevi adesso sono visibili (ti allego il file dove puoi notare i dati non cancellati). Si tratta di tutti quei fogli che iniziano un "_" (underscore).
Problema che non sono riuscito a capire: i due fogli che iniziano con DATABOOK che non sono nascosti, che non sono vuoti ma che NON SI VEDONO.
Nel Foglio index ti ho indicato, in colonne separate, i Fogli che si vedevano in Excel e quelli che ho reso visibili come da VBA.
Fai sapere. Ciao,
Mario
PS - dimenticavo. Il file lo trovi in alto a sinistra sopra il tuo primo post.
Sub scopri()
Dim sh As Worksheet
For Each sh In Sheets
sh.Visible = True
Next sh
End Sub |
Vuoi Approfondire?