'Cdigo que localiza Pastas do Windows, como Strings:
'Ex: c:\windows, c:\windows\recent...

'-------------------
'Cdigo para o Form
'-------------------

Option Explicit

Private Sub Form_Load()
  Call AchePastas
End Sub


Private Sub AchePastas()
  MsgBox "  0-  " & ListaPastas(0) & vbCrLf & _
         "  2-  " & ListaPastas(2) & vbCrLf & _
         "  5-  " & ListaPastas(5) & vbCrLf & _
         "  6-  " & ListaPastas(6) & vbCrLf & _
         "  7-  " & ListaPastas(7) & vbCrLf & _
         "  8-  " & ListaPastas(8) & vbCrLf & _
         "  9-  " & ListaPastas(9) & vbCrLf & _
         "11-  " & ListaPastas(11) & vbCrLf & _
         "19-  " & ListaPastas(19) & vbCrLf & _
         "20-  " & ListaPastas(20) & vbCrLf & _
         "21-  " & ListaPastas(21) & vbCrLf & _
         "26-  " & ListaPastas(26) & vbCrLf & _
         "27-  " & ListaPastas(27) & vbCrLf & _
         "32-  " & ListaPastas(32) & vbCrLf & _
         "33-  " & ListaPastas(33) & vbCrLf & _
         "34-  " & ListaPastas(34), , " Pastas do Windows"
  Unload Me
End Sub


'------------------------
'Cdigo para o mdulo BAS
'------------------------
Option Explicit

'APIs
Declare Function SHGetPathFromIDList Lib "shell32.dll" Alias "SHGetPathFromIDListA" (ByVal pidl As Long, ByVal pszPath As String) As Long
Declare Function SHGetSpecialFolderLocation Lib "shell32.dll" (ByVal hwndOwner As Long, ByVal nFolder As Long, pidl As ItemDaLista) As Long

'Constantes
Public Type LOCMEIO
    CB As Long
    ABID As Byte
End Type

Public Type ItemDaLista
    MKID As LOCMEIO
End Type

'Funo Pblica
Public Function ListaPastas(ByVal CSIDL As Long) As String

 Dim Zz As Long
 Dim StrDoPath As String
 Dim IDL As ItemDaLista
 Const NOERRO = 0
 Const TAM_MAX = 260

On Error GoTo PareFuncao:

 Zz = SHGetSpecialFolderLocation(Form1.hWnd, CSIDL, IDL)
 'troque o nome do Form1 se ele tiver outro nome

 If Zz = NOERRO Then
     StrDoPath = Space$(TAM_MAX)
     Zz = SHGetPathFromIDList(ByVal IDL.MKID.CB, ByVal StrDoPath)
    If Zz Then ListaPastas = Left$(StrDoPath, InStr(StrDoPath, Chr$(0)) - 1)
 End If

Exit Function
PareFuncao:
End Function
