Private Type OFFICEGETFILENAMEINFO hwndOwner As Long szAppName As String * 255 szDlgTitle As String * 255 szOpenTitle As String * 255 szFile As String * 4096 szInitialDir As String * 255 szFilter As String * 255 nFilterIndex As Long lView As Long flags As Long End Type Private Declare Function GetFileName _ Lib "msaccess.exe" _ Alias "#56" _ (gfni As OFFICEGETFILENAMEINFO, _ ByVal fOpen As Integer) As Long Function fGetFileName(Optional InitialDir As String = "") As String Dim FileInfo As OFFICEGETFILENAMEINFO Dim ret As Long With FileInfo .hwndOwner = hWndAccessApp ' Chr(0) es un caracter nulo de terminación de cadena ' usado en C/C++ .szDlgTitle = "Escoger carpeta" & Chr(0) .szInitialDir = InitialDir & Chr(0) ' con estos parámetros hacemos que se utilice el ' cuadro de diálogo para escoger carpetas .lView = 0 .flags = 32 ret = GetFileName(FileInfo, True) ' el valor -302 es el botón cancelar If ret <> -302 Then fGetFileName = Left(.szFile, InStr(.szFile, Chr(0)) - 1) End If End With End Function