VBA: selezionare un file o una cartella e incollare il percorso

Lo snippet è molto utile quando è necessario memorizzare per un utilizzo futuro (o per incollare in una casella di testo) il percorso assoluto di un file o di una cartella.

In questo esempio lo scenario è il seguente: disponiamo 1) di una casella di testo e 2) di un pulsante che avrà il compito di eseguire il codice.

La casella di testo, giusto per intenderci, la denominiamo casella_di_testo.

Abbiamo bisogno di un terzo dato di progetto: il percorso assoluto (Path) per dire a VBA da quale disco e quale cartella dovrà iniziare a navigare. Chiamiamo questa path CartellaIniziale.

Il primo passo del programma, premuto il pulsante, sarà di verificare che la casella di testo sia vuota. In caso contrario chiederà all’utente se veramente decide di proseguire con una nuova assegnazione.

Il passo successivo è documentato con tutti i commenti del caso: vi chiederà dove andare a pescare il file (o la cartella) e incollerà il percorso assoluto nella casella di testo.

ATTENZIONE. Considerate che la casella di testo dovrà contenere un LINK. Se tale casella di testo è “legata” ad un campo “collegamento ipertestuale”, tutto funzionerà per il meglio.

SE viceversa effettuerete una prova su una form vuota, al posto della casella di testo converrà utilizzare un oggetto “Collegamento ipertestale” dagli strumenti di progettazione. In questo caso “Me.caselladitesto.value” dovrà diventare “Me.etichettaxxx.Caption“!

Dim CartellaIniziale as string
'- - - - - -  -ATTENZIONE Quella che segue è una path di esempio!!! - - - - 
CartellaIniziale = "D:\Documents\"
If Me.casella_di_testo.Value <> "" Then
vbresponse = MsgBox("il campo link non è vuoto. Sei sicuro di volerlo modificare?", vbYesNo, "Attenzione!")
'se decide di continuare, vai a label 30 altrimenti esci (label 100)
If vbresponse = vbYes Then GoTo 30 Else GoTo 100
End If
30

Const msoFileDialogFilePicker As Long = 3 
'3=crea una finestra di dialogo di tipo FilePicker. Usare 4 se si desidera un FolderPicker

   Dim fd As Object
'Crea un oggetto FileDialog come finestra di dialogo per il File
   Set fd = Application.FileDialog(msoFileDialogFilePicker)
'Usiamo un blocco With...End per riferirci all'oggetto FileDialog
   With fd
'Setta la cartella iniziale dimensionata e assegnata all'inizio.
   .InitialFileName = CartellaIniziale
   .Title = "Seleziona l'allegato"
'Usa il metodo Show per mostrare la casella di dialogo File Picker e poi tornare all'azione.
'Se l'utente decide di inserire il link in casella_di_testo...
   If .Show = -1 Then
'   DoCmd.GoToRecord , "", acNewRec
   Me.casella_di_testo.Value = "#" & .SelectedItems(1) & "#"

'Se l'utente preme annulla...
   Else
   End If
 End With

'Setta Variabile oggetto a Nothing.
   Set fd = Nothing
100
Buon lavoro!




[mx_youtuber type="video" id="yl720C4NFxM"]

No thoughts on “VBA: selezionare un file o una cartella e incollare il percorso”