Discussione:
velocizzare la realizzazione di collegamenti ipertestuali
(troppo vecchio per rispondere)
carlo il genovese
2007-02-10 17:10:25 UTC
Permalink
Un cordiale saluto al ng.
Vorrei realizzare in un foglio excel collegamenti ipertestuali a determinati
files (un migliaio, ora in aumento) che si trovano in una cartella in
C:\documenti...bla bla bla.
Dato che eseguendo i collegamenti uno ad uno (nel solito canonico modo,
l'unico che conosco) il lavoro diventa piuttosto lunghetto e faticoso, ho
provato a registrare una macro che mi portasse fino al punto di apertura
della cartella che contiene i files in questione: niente da fare, se la
macro non la completo totalmente (indicando con un ultimo passaggio il
_file_ conclusivo) il registratore si rifiuta di chiudere la procedura...
Vorrei approfittare della vostra abituale disponibilita' per un qualunque
suggerimento (ovviamente alla mia (minima) portata...).
Un sacco di ringraziamenti.
--
carlo il genovese
Norman Jones
2007-02-10 17:37:48 UTC
Permalink
Ciao Carlo,

'-----------------
Vorrei realizzare in un foglio excel collegamenti ipertestuali a determinati
files (un migliaio, ora in aumento) che si trovano in una cartella in
C:\documenti...bla bla bla.
Dato che eseguendo i collegamenti uno ad uno (nel solito canonico modo,
l'unico che conosco) il lavoro diventa piuttosto lunghetto e faticoso, ho
provato a registrare una macro che mi portasse fino al punto di apertura
della cartella che contiene i files in questione: niente da fare, se la
macro non la completo totalmente (indicando con un ultimo passaggio il
_file_ conclusivo) il registratore si rifiuta di chiudere la procedura...
'-----------------
Post by carlo il genovese
Vorrei realizzare in un foglio excel collegamenti ipertestuali
a determinati files (un migliaio,

Piu' di un migliaio di collegamenti?!

Se fosse veramente cosi', non sarebbe meglio utilizzare una routine del
genere:

'=============>>
Private Sub CommandButton1_Click()
Dim fName As Variant
Dim OldPath As String
Const sNewPath As String = "C:\Data" '<<=== da CAMBIARE

OldPath = CurDir
ChDrive sNewPath
ChDir sNewPath

fName = Application.GetOpenFilename( _
FileFilter:="File Excel (*.xls),*.xls", _
Title:="SELEZIONA UN FILE")

If fName <> False Then
Workbooks.Open Filename:=fName
End If

ChDrive OldPath
ChDir OldPath
End Sub
'<<=============

Comunque, se, nonostante il consiglio, vuoi dei collegamenti
ipertestuali, postero' un codice adatto.



---
Regards,
Norman
carlo il genovese
2007-02-10 18:51:24 UTC
Permalink
Ciao, Norman, e grazie per il tuo interessamento.
-
Post by Norman Jones
Post by carlo il genovese
Vorrei realizzare in un foglio excel collegamenti ipertestuali
a determinati files (un migliaio,
Piu' di un migliaio di collegamenti?!
-
Si: si tratta di foto, musica, testi, clips, ecc. (messi tutti nella stessa
cartella, salvo qualche eccezione, poiche' hanno rapporti e rimandi logici
fra loro, coerentemente al lavoro in cui mi sono "imbarcato").
-
Post by Norman Jones
Se fosse veramente cosi', non sarebbe meglio utilizzare una routine del
[...]
-
Immagino di si: purtroppo non ho ben chiaro come fare per applicarla a un
pulsante (occorre fare cosi'... o no?) e/o renderla "attiva"... e quindi non
ho potuto provarla.
A proposito (se serve a definire meglio la mia situazione) il mio computer
ha memoria in abbondanza.
Ancora grazie.
Cordialita'
--
carlo il genovese
Norman Jones
2007-02-10 19:17:48 UTC
Permalink
Ciao Carlo,

'-------------
[...]
Immagino di si: purtroppo non ho ben chiaro come fare per
applicarla a un pulsante (occorre fare cosi'... o no?) e/o renderla
"attiva"... e quindi non ho potuto provarla.
[...]
'-------------

Per creare un pulsante:
Visualizza | Barre degli strumenti | Strunenti di Controllo
Disegna il tuo pulsante di comando sul foglio

Con il tasto destro del mouse fai click sulla linguetta del foglio,
scegli "Visualizza codice" e nella finestra del codice incolla
il codice:

'=============>>
Private Sub CommandButton1_Click()
Dim fName As Variant
Dim OldPath As String
Const sNewPath As String = "C:\Data" '<<=== da CAMBIARE

OldPath = CurDir
ChDrive sNewPath
ChDir sNewPath

fName = Application.GetOpenFilename( _
FileFilter:="File Excel (*.xls),*.xls", _
Title:="SELEZIONA UN FILE")

If fName <> False Then
Workbooks.Open Filename:=fName
End If

ChDrive OldPath
ChDir OldPath
End Sub
'<<=============

Sostituisci ""C:\Data" con il percorso della cartella di interese.

Se hai ancora un problema, potrei mandarti un file di esempio
in risposta ad un'email:

***@NOSPAMbtconnectDOTcom

(Cancella "NOSPAM" e sostituisci "DOT" con un punto)

Se include il percorso della cartella di interesse, ti manderĂ²
un file di esempio, che dimostrerĂ  sia i collegamenti ipertestuali
che l'approccio del CommandButton, e postero' il codice qua.


---
Regards,
Norman
carlo il genovese
2007-02-10 20:08:08 UTC
Permalink
Post by Norman Jones
Ciao Carlo,
[..]
--
Ciao, Norman.
Sempre gentile e disponibile: non ti smentisci mai!
Mi hai dato una spiegazione perfettamente comprensibile e naturalmente ho
risolto alla grande... o meglio, "avrei" risolto. Infatti col codice che mi
hai suggerito, excel mi apre solo _apparentemente_ la giusta finestra:
infatti nella barra del titolo appare la scritta "scegli un file" ma le
opzioni di scelta (in "tipo file") si riducono solo a "file excel" e quindi
la finestra resta ovviamente vuota poiche' i files in questione non sono di
excel...
Spero di essermi spiegato: potresti suggerirmi qualche escamotage?
Grazie.
--
carlo il genovese
carlo il genovese
2007-02-10 20:19:22 UTC
Permalink
Abbi pazienza, Norman, vorrei chiederti, abusando della tua gentilezza, se
potresti...
-
[...]
Post by Norman Jones
Comunque, se, nonostante il consiglio, vuoi dei collegamenti
ipertestuali, postero' un codice adatto.
-
... con gratitudine.
--
carlo il genovese
Norman Jones
2007-02-10 21:17:36 UTC
Permalink
Ciao Carlo,

'---------------
Abbi pazienza, Norman, vorrei chiederti, abusando della tua
gentilezza, se potresti...
Post by Norman Jones
Comunque, se, nonostante il consiglio, vuoi dei collegamenti
ipertestuali, postero' un codice adatto.
'---------------

Prova qualcosa del genere:

'=============>>
Public Sub TesterX()
Dim WB As Workbook
Dim SH As Worksheet
Dim FSO As Object
Dim oFolder As Object
Dim oFile As Object
Dim oFiles As Object
Dim i As Long
Const sFolder As String = "C:\Data\" '<<=== da CAMBIARE

Set WB = Workbooks("Pippo.xls") '<<=== da CAMBIARE
Set SH = WB.Sheets("Foglio1") '<<=== da CAMBIARE

Set FSO = CreateObject("Scripting.FileSystemObject")
Set oFolder = FSO.GetFolder(sFolder)
Set oFiles = oFolder.Files

On Error GoTo XIT
Application.ScreenUpdating = False
i = 1
For Each oFile In oFiles
i = i + 1
With oFile
SH.Hyperlinks.Add Anchor:=SH.Cells(i, "A"), _
Address:=.Path, _
TextToDisplay:=.Path
End With
Next oFile

SH.Columns(1).AutoFit
XIT:
Application.ScreenUpdating = True
End Sub
'<<=============


---
Regards,
Norman
Norman Jones
2007-02-10 21:44:44 UTC
Permalink
Ciao Carlo,

Per assicurarsi che i collegamenti ipertestuali siano
sempre aggiornati all'apertura del file, prova invece:

Nel modulo This Workbook (vedi di sotto)
'=============>>
Private Sub Workbook_Open()
Call Tester
End Sub
'<<=============

Alt-F11 per aprire l'Editor di VBA
Ctrl-R per aprire la finestra Gestione Progetti
Fai un doppio clic sull'oggetto ThisWorkbook
Incollarci il suddetto codice
Alt-F11 per tornare in Excel.

In un modulo standard (vedi di sotto)

'=============>>
Public Sub Tester()
Dim WB As Workbook
Dim SH As Worksheet
Dim Rng As Range
Dim FSO As Object
Dim oFolder As Object
Dim oFile As Object
Dim oFiles As Object
Dim i As Long
Const sFolder As String = "C:\Data\" '<<=== da CAMBIARE
Const sStr As String = "A2"

Set WB = Workbooks("Pippo.xls") '<<=== da CAMBIARE
Set SH = WB.Sheets("Foglio1") '<<=== da CAMBIARE
Set Rng = SH.Range("A2") '<<=== da CAMBIARE

Set FSO = CreateObject("Scripting.FileSystemObject")
Set oFolder = FSO.GetFolder(sFolder)
Set oFiles = oFolder.Files

On Error GoTo XIT
Application.ScreenUpdating = False

Rng.EntireColumn.Hyperlinks.Delete
For Each oFile In oFiles
With oFile
SH.Hyperlinks.Add Anchor:=Rng.Offset(i), _
Address:=.Path, _
TextToDisplay:=.Path
End With
i = i + 1
Next oFile

SH.Columns(1).AutoFit
XIT:
Application.ScreenUpdating = True
End Sub
'<<=============

Alt-F11 per aprire l'Editor di VBA
Menu | Inserisci | Modulo
Incolla il suddetto codice
Alt-F11 per tornare in Excel
Alt-F8
Seleziona "Tester"
Esegui


---
Regards,
Norman
carlo il genovese
2007-02-10 22:34:50 UTC
Permalink
Post by Norman Jones
Ciao Carlo,
Per assicurarsi che i collegamenti ipertestuali siano
[...]
--
Grande Norman!! Grandissimo Norman!!!
E' esattamente quello che cercavo e funziona tutto meglio di quanto potessi
sperare. Malgrado la mia inadeguatezza anche nello spiegare chiaramente la
mia richiesta, hai saputo comprendere appieno e propormi la soluzione che
speravo esistesse: mi hai tolto ore e ore di snervante e noioso lavoro.
Non posso far altro che ripeterti: grazie.
Con grande cordialita'.
--
carlo il genovese
carlo il genovese
2007-02-10 23:19:20 UTC
Permalink
Gentile "mago" Norman...
...me n'e' venuta in mente un'altra: con il codice che mi hai dato e che ho
felicemente applicato vengono generati i collegamenti ai files esattamente
come avevo chiesto, e indicati, faccio un esempio, con la stringa:
<<C:\Documents and Settings\Carlo\Documenti\Foto\TUTTE\Acrobata.jpeg>>.
Ci sarebbe un modo, sempre mantenendo gli aggiornamenti all'apertura del
file, di far apparire solo l'ultima parte della stringa che indica il
collegamento? In questo caso:
<<Acrobata.jpeg>>
Sempre grazie.
--
carlo il genovese
Norman Jones
2007-02-11 00:25:14 UTC
Permalink
Ciao Carlo,

'---------------
...me n'e' venuta in mente un'altra: con il codice che mi hai dato e che ho
felicemente applicato vengono generati i collegamenti ai files esattamente
come avevo chiesto, e indicati, faccio un esempio, con la stringa:
<<C:\Documents and Settings\Carlo\Documenti\Foto\TUTTE\Acrobata.jpeg>>.
Ci sarebbe un modo, sempre mantenendo gli aggiornamenti all'apertura del
file, di far apparire solo l'ultima parte della stringa che indica il
collegamento? In questo caso:
<<Acrobata.jpeg>>
'---------------

Sostituisci:

SH.Hyperlinks.Add Anchor:=Rng.Offset(i), _
Address:=.Path, _
TextToDisplay:=.Path

con

SH.Hyperlinks.Add Anchor:=Rng.Offset(i), _
Address:=.Path, _
TextToDisplay:=.Name


---
Regards,
Norman
carlo il genovese
2007-02-11 02:26:11 UTC
Permalink
"Norman Jones" <***@whereforartthou.com> ha scritto nel messaggio news:***@TK2MSFTNGP03.phx.gbl...
[...]
Post by Norman Jones
SH.Hyperlinks.Add Anchor:=Rng.Offset(i), _
Address:=.Path, _
TextToDisplay:=.Path
con
SH.Hyperlinks.Add Anchor:=Rng.Offset(i), _
Address:=.Path, _
TextToDisplay:=.Name
-
Ottimo, Grazie.
--
carlo il genovese
Norman Jones
2007-02-10 20:48:45 UTC
Permalink
Ciao Carlo,

'-------------
Mi hai dato una spiegazione perfettamente comprensibile e naturalmente ho
risolto alla grande... o meglio, "avrei" risolto. Infatti col codice che mi
hai suggerito, excel mi apre solo _apparentemente_ la giusta finestra:
infatti nella barra del titolo appare la scritta "scegli un file" ma le
opzioni di scelta (in "tipo file") si riducono solo a "file excel" e quindi
la finestra resta ovviamente vuota poiche' i files in questione non sono di
excel...
'-------------

Prova la seguente versione:
'=============>>
Public Sub Tester()
Dim fName As Variant
Dim OldPath As String
Const sNewPath As String = "C:\Data" '<<=== da CAMBIARE

OldPath = CurDir
ChDrive sNewPath
ChDir sNewPath

fName = Application.GetOpenFilename( _
FileFilter:="Tutti File (*.*),*.*", _
Title:="SELEZIONA UN FILE")

If fName <> False Then
Workbooks.Open Filename:=fName
End If

ChDrive OldPath
ChDir OldPath
End Sub
'<<=============


---
Regards,
Norman
Loading...