Serie di collegamenti ipertestuali
Hai un problema con Excel? 
Serie di collegamenti ipertestuali
di Andrea (utente non iscritto) data: 13/11/2012 12:30:32
Salve, avrei un altra domanda da farvi dopo le brillanti soluzioni che mi avete dato in precedenza
Il mio problema è questo:
Devo creare in 12 fogli di lavoro 2600 collegamenti ipertestuali a dei singoli file contenuti in delle cartelle distinte con lo stesso nome dei fogli. Esiste un metodo più veloce, invece di cliccare ogni volta su "inserisci collegamento ipertestuale"?
Grazie, Andrea.
di Vecchio Frac data: 13/11/2012 13:59:14
Ctrl-Alt-K.
Oppure un ragionamento come questo, foglio per foglio:
un ciclo For Each File su un oggetto di tipo Folder che contiene tutti i tuoi Files, con un comando simile a Activecell.Hyperlinks.Add myCell, FileName
Al termine del ciclo For in ogni cella "myCell" avrai il collegamento ipertestuale al File.
di Andrea (utente non iscritto) data: 13/11/2012 16:14:14
Ctrl-Alt-K l ho già utilizzato, ma non abbrevia di molto i tempi.
Per la seconda parte, riusciresti a semplificarmi il più possibile i passaggi che devo eseguire? non sono molto pratico di VBA
Grazie.
di Andrea (utente non iscritto) data: 13/11/2012 16:16:36
Scusate, non riesco a capire perchè mi abbia pubblicato 5 volte la stessa risposta.
di Vecchio Frac data: 13/11/2012 18:59:46
Al problema dei messaggi ripetuti ci penso io, è un problema del server.
Al problema tuo serve creare un oggetto FileSystemObject, raggiungere la cartella coi file, ciclare per ogni file e applicare l'istruzione che ho già suggerito.
Appena ho modo butto giù una bozza di codice.
Quel che non so è se sul tuo Mac questo ragionamento del FileSystemObject funziona perchè non so come funziona il file system del Mac :)
di Andrea (utente non iscritto) data: 13/11/2012 19:11:11
No no lascia stare, ho risolto il problema del mac. Utilizzo il mio buon vecchio windows che mi semplifica la vita :)
Aspetto tue notizie allora :) grazie!
di Vecchio Frac data: 14/11/2012 14:17:20
Ti fornisco una base di partenza su cui ragionare.
Ho una cartella "root" che contiene tante cartelle che contengono tanti files.
Inserirò nel file da cui lancio la macro tanti fogli nominati come le cartelle che sono contenute in root, e in ogni foglio ci saranno tanti collegamenti ipertestuali uno per ogni file presente in ogni sottocartella.
Con il codice che segue:
1. creo un nuovo foglio (worksheet.add)
2. lo rinomino come ognuna delle cartelle che sono nella cartella "root", quella principale
3. inserisco nel foglio i collegamenti ipertestuali ai file presenti in cartella, a partire da A1 in giù, uno per cella
4. ciclo per le altre cartelle della directory di lavoro
Option Explicit
Sub create_hyperlinks()
Dim oFile As Object, oFolder As Object, root As Object, ws As Worksheet
Const myPath = "C:miacartella"
Set root = CreateObject("Scripting.FileSystemObject").GetFolder(myPath)
For Each oFolder In root.subfolders
Set ws = Worksheets.Add(after:=Sheets(Sheets.Count))
ws.Name = (oFolder.Name)
For Each oFile In oFolder.Files
ws.Hyperlinks.Add Cells([COUNTA(A:A)+1], 1), (oFile.Name)
Next
Next
End Sub |
di Andrea (utente non iscritto) data: 14/11/2012 18:29:11
Ho un piccolo problema.
Dopo che la marco mi genera i collegamenti ipertestuali, andando a cliccare su uno di questi mi dice: "Impossibile aprire il file specificato"
di Andrea (utente non iscritto) data: 14/11/2012 18:34:33
E come ultima cosa... Sarebbe possibile visualizzare come nome del collegamento ipertestuale la scritta " APRI 0001; APRI 0002 ecc" ? invece del nome del file seguito dalla sua estensione? Altrimenti fa niente lo cambio uno ad uno.
Grazie.
di Andrea (utente non iscritto) data: 14/11/2012 18:46:04
Per il problema del nome del collegamento ho risolto :) Però non riesco ancora a capire il motivo per il quale non mi apre il file
di Vecchio Frac data: 14/11/2012 18:46:16
Ecco qui.
Scopri le differenze ;)
Option Explicit
Sub create_hyperlinks()
Dim oFile As Object, oFolder As Object, root As Object, ws As Worksheet, i As Integer
Const myPath = "C:UsersFranzDesktopEXCEL VBA"
Set root = CreateObject("Scripting.FileSystemObject").GetFolder(myPath)
For Each oFolder In root.subfolders
Set ws = Worksheets.Add(after:=Sheets(Sheets.Count))
ws.Name = (oFolder.Name)
For Each oFile In oFolder.Files
i = i + 1
ws.Hyperlinks.Add Cells([COUNTA(A:A)+1], 1), (oFile), TextToDisplay:=Format(i, "APRI 0000")
Next
Next
End Sub
|
di Andrea (utente non iscritto) data: 14/11/2012 19:03:56
Su 30 tentativi mi ha fatto aprire solo due volta i file. Me li ha creati sul foglio precedente a quello che ha generato la macro e funzionavano. Il problema è che non ho cambiato nulla nel codice in quei due tentativi. Riproverò sperando di capire qualcosa in piu
di Vecchio Frac data: 14/11/2012 20:01:32
Per essere chiari:
ws.Hyperlinks.Add Cells([COUNTA(A:A)+1], 1), (oFile), TextToDisplay:=Format(i, "APRI 0000")
aggiunge un collegamento ipertestuale nel foglio Excel corrente, che punta al file di volta in volta individuato nella cartella di file, visualizzando il testo "APRI " dove ad ogni file scovato il contatore viene incrementato di uno.
I file del collegamento ipertestuale naturalmente vengono aperti col visualizzatore predefinito, se ci clicchi sopra. Se il collegamento punta a un file doc verranno aperti con Word (probabilmente). Se il collegamento punta a un zip verrà aperto con Winzip (o Winrar).
Non ho capito quali sono le tue difficoltà attuali.
di Andrea (utente non iscritto) data: 15/11/2012 12:49:38
Niente, non ho fatto altro che copiare e incollare il codice che mi hai inviato, sostituendo il percorso con quello della mia cartella. Ma non mi apre i collegamenti ipertestuali. Sicuramente sto sbagliando qualcosa
di Vecchio Frac data: 15/11/2012 20:20:25
Per informazione, hai circondato "(oFile)" con parentesi tonde? sono importanti ^_^
qui:
ws.Hyperlinks.Add Cells([COUNTA(A:A)+1], 1), (oFile), TextToDisplay:=Format(i, "APRI 0000")
di Andrea (utente non iscritto) data: 16/11/2012 10:21:16
sI SI CI SONO
di Vecchio Frac data: 16/11/2012 14:21:30
Eppure sulla mia macchina il codice è perfettamente funzionante.
Vengono generati tre fogli con tanti collegamenti ipertestuali ai file presenti nelle cartelle che corrispondono ai fogli creati. I collegamenti funzionano altrettanto correttamente.
Versione di Excel? Sistema operativo in uso?
di Andrea (utente non iscritto) data: 20/11/2012 11:01:17
Mi scuso per il ritardo nel rispondere ma ho avuto problemi di connessione. La macro funziona , probabilmente il problema era che io stavo cercado di inserire dei file che stavano in una cartella di dropbox
Vuoi Approfondire?