Una famiglia di software per fogli di calcolo Microsoft con strumenti per l'analisi, la creazione di grafici e la comunicazione dei dati.
Cerco di spiegarmi con un esempio.
Nel mio foglio di calcolo, la colonna B contiene il percorso completo di una serie di file del computer locale:
C:\percorso del file\file_di_esempio
Utilizzando la funzione di Office COLLEG.IPERTESTUALE, posso inserire un collegamento ai file, per esempio nella colonna C, utilizzando la formula
C1=COLLEG.IPERTESTUALE(B1;nome_collegamento).
Quello che io vorrei fare, invece, è avere una funzione che apra la cartella che contiene il file, cioè apra
C:\percorso del file\
e, questo è il difficile, all'interno della cartella che si apre, selezioni automaticamente "file_di_esempio".
Non credo esista una funzione che faccia ciò
Possiamo farlo sfruttando l'evento BeforeDoubleClick o l'evento SelectionChange del foglio.
Mettiamo il caso tu voglia trovarti nella directory che hai Scritto all'interno di una delle celle che si trova in colonna C. Inserisci questo codice nel modulo di codice del fogliodove vuoi questa cosa:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim hpl As Hyperlink
If Target.Column = 3 Then
If Target.Value <> "" Then
With Application.FileDialog(msoFileDialogOpen)
.AllowMultiSelect = True
.InitialFileName = Target.Value
.Show
End With
End If
End If
Cancel = True
Set hpl = Nothing
End Sub
Se preferisci l'evento SelectionChange:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim hpl As Hyperlink
If Target.Column = 3 Then
If Target.Value <> "" Then
With Application.FileDialog(msoFileDialogOpen)
.AllowMultiSelect = True
.InitialFileName = Target.Value
.Show
End With
End If
End If
Set hpl = Nothing
End Sub
Utilizzane una sola alla volta e vedi la differenza. In entrambi i casi il contenuto della cella deve essere coerente con la cartella che vuoi aprire, ad esempio:
C:\Test\Cartella\
Se invece, hai ad esempio gli Hyperlinks completi in colonna A e vuoi portarti all'interno della cartella che contiene quel file facendo doppio click sulla cella di colonna C che si trova sulla stessa riga:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim s As String
Dim rng As Range
Dim hpl As Hyperlink
Dim lng As Long
Dim lPos As Long
If Target.Column = 3 Then
For Each hpl In Me.Hyperlinks
If hpl.Range.Address = Target.Offset(0, -2).Address Then
s = hpl.Address
For lng = 1 To Len(s)
If Mid(s, lng, 1) = "" Then
lPos = lng
End If
Next
With Application.FileDialog(msoFileDialogOpen)
.AllowMultiSelect = True
.InitialFileName = Mid(s, 1, lPos)
.Show
End With
End If
Next
End If
Cancel = True
Set hpl = Nothing
End Sub
Prova un po'.
Grazie.