Cartella di navigazione per la selezione della cartella utilizzando VBA in Microsoft Excel

Anonim

In questo articolo, abbiamo creato una procedura che viene utilizzata per visualizzare la finestra di dialogo, che viene utilizzata per sfogliare la cartella per selezionare la cartella.

Questo codice può essere utilizzato insieme ad altre macro in cui è richiesta la selezione della cartella in fase di esecuzione.

Spiegazione logica

In questo articolo abbiamo fatto riferimento a due funzioni API per visualizzare la finestra di dialogo per sfogliare la cartella.

Quando selezioniamo una cartella particolare utilizzando il browser delle cartelle, la finestra di dialogo restituisce il percorso della cartella selezionata.

Si prega di seguire sotto per il codice

 Opzione esplicita 'Dichiarazione del tipo di dati utente 'Usato dalla funzione GetFolderName Private Type BROWSEINFO hOwner As Long pidlRoot As Long pszDisplayName As String lpszTitle As String ulFlags As Long lpfn As Long lParam As Long iImage As Long End Type 'Dichiarazione di riferimento alla funzione API Private Declare Funzione SHGetPathFromIDList Lib "shell32.dll" _ Alias ​​"SHGetPathFromIDListA" (ByVal pidl As Long, ByVal pszPath As String) As Long Private Declare Function SHBrowseForFolder Lib "shell32.dll" _ Alias ​​"SHBrowseForFolderA" (lpBrowseINFO Function As LongFolderInfo) (Msg As String) As String 'Restituisce il nome della cartella selezionata dall'utente Dim bInfo As BROWSEINFO, percorso As String, r As Long Dim X As Long, pos As Integer bInfo.pidlRoot = 0 'Tipo di directory da restituire bInfo .ulFlags = &H1 'Visualizza la finestra di dialogo X = SHBrowseForFolder(bInfo) 'Analizza il percorso del risultato = Space$(512) 'Richiamo della funzione API r = SHGetPathFromIDList(ByVal X, ByVal path) 'Codice per l'eliminazione degli spazi aggiuntivi nel end of folder name return If r Then pos = InStr(path, Chr(0)) GetFolderName = Left(path, pos - 1) Else GetFolderName = "" End If End Function Sub TestGetFolderName() Dim FolderName As String 'Chiamata della funzione GetFolderName FolderName = GetFolderName("Seleziona una cartella") If FolderName = "" Then MsgBox "Non hai selezionato una cartella." Else MsgBox "Hai selezionato questa cartella: " & FolderName End If End Sub 

Se ti è piaciuto questo blog, condividilo con i tuoi amici su Facebook. Inoltre, puoi seguirci su Twitter e Facebook.

Ci piacerebbe avere tue notizie, facci sapere come possiamo migliorare il nostro lavoro e renderlo migliore per te. Scrivici al sito di posta elettronica