|
Rank: Newbie
Iscritto dal : 11/12/2010 Posts: 9
|
Ciao a tutti, ho un problema enorme con i collegamenti ipertestuali di excel e spero nel vostro aiuto.
File di excel con 8 fogli di lavoro ogni foglio contiene un elenco di documenti nella colonna C è riportato l'elenco numerico dei documenti (da 1 a 1000) ad ogni cella numero corrisponde un collegamento ipertestuale al file PDF corrispondente al documento elencato i file pdf sono contenuti in diverse cartelle a seconda della numerazione (1-99;100-199; ecc) le cartelle sono contenute in una cartella "docPdf" salvata sul server
Il problema è che non posso più aprire i pdf collegati in quanto senza alcuna ragione apparente excel ha modificato il percorso di collegamento da: \\Server\docpdf\1-99\nomefile.pdf a: \\C:\Documents and Settings\Users\Dati applicazioni\Microsoft\Excel\docpdf\1-99\nomefile.pdf
DOMANDA: 1) qual'è l'origine del problema? così che possa evitare si ripeti 2) come posso attribuire nuovamente il giusto percorso senza doverlo fare manualmente per tutti i 7000 docuementi? 3) potete suggerirmi un altro sistema per gestire l'elenco dei documenti?
grazie infinite e buona giornata a tutti.
|
|
|
|
|
Rank: AiutAmico
Iscritto dal : 5/29/2003 Posts: 1,694
|
salve ti rimando alla lettura di un vecchio post che proponeva la stessa problematica: http://forum.aiutamici.com/yaf_postst67025_Excel-2007--Collegamenti-ipertestuali--Modificare.aspxnel tuo caso dovrai modificare la macro come segue: Sub CambiaLink() Dim Hyl As Hyperlink newname = "\\Server\docpdf\1-99\" For Each Hyl In Sheets("Foglio1").Hyperlinks x = Split(Hyl.Address, "\") nomefile = x(UBound(x)) Hyl.Address = newname & nomefile Next Hyl End Sub PS. Provare sempre su un file provvisiorio saluti Giap
|
|
Rank: Newbie
Iscritto dal : 11/12/2010 Posts: 9
|
grazie mille a10n11, anche per la tempestività della tua risposta. Funziona e so' che non avevi dubbi, ma avrei bisogno di un ulteriore aiuto. con questa macro tutti i collegamenti vengono indirizzati alla cartella "1-99", ma nell'elenco i documenti sono contenuti in cartelle diverse a seconda della numerazione quindi: i documenti dal 1 al 99 sono nella cartella "1-99" i documenti dal 100 al 199 sono nella cartella "100-199" e così via. E' possibile modificare la macro in modo da risolvere questo problema? magari applicandola ad una serie di righe anziché a tutto il foglio?
Spero di non abusare troppo della tua pazienza. buona giornata.
|
|
Rank: AiutAmico
Iscritto dal : 5/29/2003 Posts: 1,694
|
salve prova a modificare così: Sub CambiaLink() Dim Hyl As Hyperlink newname = "\\Server\docpdf\" For Each Hyl In Sheets("Foglio1").Hyperlinks x = Split(Hyl.Address, "\") nomefile = x(UBound(x) - 1) & "\" & x(UBound(x)) Hyl.Address = newname & nomefile Next Hyl End Sub saluti Giap
|
|
Rank: Newbie
Iscritto dal : 11/12/2010 Posts: 9
|
ciao, porta pazienza, sono assolutamente ignorante in materia.
ho provato a modificare come mi hai indicato ma mi da errore "indice non incluso nell'intervallo" help mi!
|
|
Rank: AiutAmico
Iscritto dal : 5/29/2003 Posts: 1,694
|
gatola ha scritto:ciao, porta pazienza, sono assolutamente ignorante in materia.
ho provato a modificare come mi hai indicato ma mi da errore "indice non incluso nell'intervallo" help mi! salve qual'è la riga che ti dà l'errore? la puoi individuare cliccando sul pulsante "Debug" quando compare il messaggio di errore. La riga incriminata è quella evidenziata in giallo. saluti Giap
|
|
Rank: Newbie
Iscritto dal : 11/12/2010 Posts: 9
|
questa: nomefile = x(UBound(x) - 1) & "\" & x(UBound(x)) ciao
|
|
Rank: AiutAmico
Iscritto dal : 5/29/2003 Posts: 1,694
|
salve Nel tuo foglio ci sono forse altri collegamenti ipertestuali? del tipo riferimenti a nomi o celle del documento? se si, l'errore che segnali è normale poichè l'array che viene creato dall'istruzione split avrà un unico elemento e l'istruzione x(UBound(x) - 1) manda tutto nel pallone. prova a modificare così: Sub CambiaLink() Dim Hyl As Hyperlink newname = "\\Server\docpdf\" For Each Hyl In Sheets("Foglio1").Hyperlinks x = Split(Hyl.Address, "\") If UBound(x) > 1 Then NOMEFILE = x(UBound(x) - 1) & "\" & x(UBound(x)) Hyl.Address = newname & NOMEFILE End If Next Hyl End Sub saluti Giap
|
|
Rank: Newbie
Iscritto dal : 11/12/2010 Posts: 9
|
FUNZIONA!!!! su tutti i fogli tranne che sull'ultimo che ho creato, il "2010" e precisamente:
QUESTA FUNZIONA Sub CambiaLink() Dim Hyl As Hyperlink newname = "\\SERVER\docpdf2009\" For Each Hyl In Sheets("2009").Hyperlinks x = Split(Hyl.Address, "\") If UBound(x) > 1 Then NOMEFILE = x(UBound(x) - 1) & "\" & x(UBound(x)) Hyl.Address = newname & NOMEFILE End If Next Hyl End Sub
QUESTA INVECE NO Sub CambiaLink() Dim Hyl As Hyperlink newname = ""\\SERVER\docpdf2010\" For Each Hyl In Sheets("2010").Hyperlinks x = Split(Hyl.Address, "\") If UBound(x) > 1 Then NOMEFILE = x(UBound(x) - 1) & "\" & x(UBound(x)) Hyl.Address = newname & NOMEFILE End If Next Hyl End Sub
Nel foglio ci sono altri collegamenti ipertestuali sempre riferiti ad altri file.
buona giornata
|
|
Rank: Newbie
Iscritto dal : 11/12/2010 Posts: 9
|
scusa, dimenticavo di dirti che in tutti i fogli genera i collegamenti alle cartelle giuste (1-99, 100-199, ecc) mentre sul "2010" genera i collegamenti alle cartelle 1-100, 101-200, ecc. ciao
|
|
Rank: AiutAmico
Iscritto dal : 5/29/2003 Posts: 1,694
|
gatola ha scritto:FUNZIONA!!!! su tutti i fogli tranne che sull'ultimo che ho creato, il "2010" e precisamente:
QUESTA FUNZIONA Sub CambiaLink() Dim Hyl As Hyperlink newname = "\\SERVER\docpdf2009\" For Each Hyl In Sheets("2009").Hyperlinks x = Split(Hyl.Address, "\") If UBound(x) > 1 Then NOMEFILE = x(UBound(x) - 1) & "\" & x(UBound(x)) Hyl.Address = newname & NOMEFILE End If Next Hyl End Sub
QUESTA INVECE NO Sub CambiaLink() Dim Hyl As Hyperlink newname = ""\\SERVER\docpdf2010\" For Each Hyl In Sheets("2010").Hyperlinks x = Split(Hyl.Address, "\") If UBound(x) > 1 Then NOMEFILE = x(UBound(x) - 1) & "\" & x(UBound(x)) Hyl.Address = newname & NOMEFILE End If Next Hyl End Sub
Salve nella macro che non funziona se vedi attentamente nell'assegnazione dle valore della variabile newname c'è un doppio apice di troppo ""\\SERVER\docpdf2010\" deve essere "\\SERVER\docpdf2010\" gatola ha scritto: scusa, dimenticavo di dirti che in tutti i fogli genera i collegamenti alle cartelle giuste (1-99, 100-199, ecc) mentre sul "2010" genera i collegamenti alle cartelle 1-100, 101-200, ecc.
la macro non modifica il nome delle cartelle, ma ricopia pari pari quelle che trova nel collegamento. Praticamente non fa altro che sostituire la stringa segnata in rosso \\C:\Documents and Settings\Users\Dati applicazioni\Microsoft\Excel\docpdf\1-99\nomefile.pdf con la stringa segnata in Verde \\Server\docpdf\1-99\nomefile.pdf Nel foglio 2010 qual'è l'indirizzo del collegamento ipertestuale da cambiare? saluti Giap
|
|
Rank: Newbie
Iscritto dal : 11/12/2010 Posts: 9
|
quello degli apici è stato un errore di trascrizione, ma in effetti la stringa da sostituire è \\C:\Documents and Settings\Users\Dati applicazioni\Microsoft\Excel\docpdf\1-100\nomefile.pdf benchè la cartella 1-100 non esista e non sia mai esistita. Tanto più che prima del pasticcio i collegamenti alla cartella 1-99 funzionavano. ciao
|
|
Rank: AiutAmico
Iscritto dal : 5/29/2003 Posts: 1,694
|
salve sarebbe interessante sapere cosa è stato fatto nel file e capire cosa abbia scombussolato i collegamenti. saluti Giap
|
|
Rank: Newbie
Iscritto dal : 11/12/2010 Posts: 9
|
Ciao, con le tue istruzioni sono riuscita a sistemare tutti i fogli tranne l'ultimo creato. Grazie, grazie, grazie!!!!
Ma posso abusare ancora della tua pazienza? Per risolvere la questione sull'ultimo foglio dovrei rifare tutti i collegamenti manualmente, ma se cancello la colonna con i collegamenti che non funzionano e ne ricreo una nuova, c'è un modo per attribuire automaticamente gli indirizzi dei collegamenti ipertestuali?
|
|
Guest |