Carpeta de exploración para seleccionar la carpeta usando VBA en Microsoft Excel

Anonim

En este artículo, hemos creado un procedimiento que se utiliza para mostrar el cuadro de diálogo, que se utiliza para navegar a través de la carpeta para seleccionar la carpeta.

Este código se puede utilizar junto con otras macros donde se requiere la selección de la carpeta en tiempo de ejecución.

Explicación lógica

En este artículo, hemos hecho referencia a dos funciones de la API para mostrar el cuadro de diálogo de la carpeta de navegación.

Cuando seleccionamos una carpeta en particular usando el navegador de carpetas, el cuadro de diálogo devuelve la ruta de la carpeta seleccionada.

Siga a continuación para obtener el código

 Opción explícita 'Declarar tipo de datos de usuario' Usado por la función GetFolderName Tipo privado 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 'Declarando referencia a la función API Private Declare Función SHGetPathFromIDList Lib "shell32.dll" _ Alias ​​"SHGetPathFromIDListA" (ByVal pidl As Long, ByVal pszPath As String) As Long Private Declare Función SHBrowseForFolder Lib "shell32.dll" _ Alias ​​"SHBrowseForFolderA" (lpBrowseInfo As Browse) Función (Msg As String) As String 'Devuelve el nombre de la carpeta seleccionada por el usuario Dim bInfo As BROWSEINFO, path As String, r As Long Dim X As Long, pos As Integer bInfo.pidlRoot = 0' Tipo de directorio para devolver bInfo .ulFlags = & H1 'Mostrar el diálogo X = SHBrowseForFolder (bInfo)' Analizar la ruta del resultado = Espacio $ (512) 'Llamando a la función API r = SHGetPathFromIDList (ByVal X, ByVal path)' Código para eliminar espacios adicionales en la fin del nombre de la carpeta return If r Then pos = InStr (ruta, Chr (0)) GetFolderName = Left (ruta, pos - 1) Else GetFolderName = "" End If End Function Sub TestGetFolderName () Dim FolderName As String 'Llamando a la función GetFolderName FolderName = GetFolderName ("Seleccionar una carpeta") Si FolderName = "" Entonces MsgBox "No seleccionaste una carpeta". Else MsgBox "Seleccionaste esta carpeta:" & FolderName End If End Sub 

Si te gustó este blog, compártelo con tus amigos en Facebook. Además, puede seguirnos en Twitter y Facebook.

Nos encantaría saber de usted, háganos saber cómo podemos mejorar nuestro trabajo y hacerlo mejor para usted. Escríbanos al sitio de correo electrónico