这个问题好像已经回答过了:Option  Explicit
  
  Private  Type  ITEMIDLIST
          mkid  As  Long
  End  Type
  
  Private  Declare  Function  SHGetSpecialFolderLocation  _
          Lib  "shell32.dll"  _
          (ByVal  hwndOwner  As  Long,  ByVal  nFolder  As  SHFolders,  _
          ppidl  As  ITEMIDLIST)  As  Long
  Private  Declare  Sub  CoTaskMemFree  Lib  "ole32.dll"  _
          (ByVal  pv  As  Long)
  Private  Declare  Function  SHGetPathFromIDList  Lib  "shell32.dll"  _
            Alias  "SHGetPathFromIDListA"  (ByVal  pidl  As  Long,  _
            ByVal  pszPath  As  String)  As  Long
  
  Public  Enum  SHFolders
          CSIDL_DESKTOP  =  &  H0
          CSIDL_INTERNET  =  &  H1
          CSIDL_PROGRAMS  =  &  H2
          CSIDL_CONTROLS  =  &  H3
          CSIDL_PRINTERS  =  &  H4
          CSIDL_PERSONAL  =  &  H5
          CSIDL_FAVORITES  =  &  H6
          CSIDL_STARTUP  =  &  H7
          CSIDL_RECENT  =  &  H8
          CSIDL_SENDTO  =  &  H9
          CSIDL_BITBUCKET  =  &  HA
          CSIDL_STARTMENU  =  &  HB
          CSIDL_DESKTOPDIRECTORY  =  &  H10
          CSIDL_DRIVES  =  &  H11
          CSIDL_NETWORK  =  &  H12
          CSIDL_NETHOOD  =  &  H13
          CSIDL_FONTS  =  &  H14
          CSIDL_TEMPLATES  =  &  H15
          CSIDL_COMMON_STARTMENU  =  &  H16
          CSIDL_COMMON_PROGRAMS  =  &  H17
          CSIDL_COMMON_STARTUP  =  &  H18
          CSIDL_COMMON_DESKTOPDIRECTORY  =  &  H19
          CSIDL_APPDATA  =  &  H1A
          CSIDL_PRINTHOOD  =  &  H1B
          CSIDL_ALTSTARTUP  =  &  H1D  '//  DBCS
          CSIDL_COMMON_ALTSTARTUP  =  &  H1E  '//  DBCS
          CSIDL_COMMON_FAVORITES  =  &  H1F
          CSIDL_INTERNET_CACHE  =  &  H20
          CSIDL_COOKIES  =  &  H21
          CSIDL_HISTORY  =  &  H22
  End  Enum
  
  
  Private  Function  FolderLocation(lFolder  As  SHFolders)  As  String
  
  Dim  lp  As  ITEMIDLIST
  Dim  tmpStr  As  String
  'Get  the  PIDL  for  this  folder
  SHGetSpecialFolderLocation  hWnd,  lFolder,  lp
  'Convert  it  to  a  string  path
  tmpStr  =  Space$(255)
  SHGetPathFromIDList  lp.mkid,  tmpStr
  If  InStr(tmpStr,  Chr$(0))  >    0  Then
          'Strip  nulls  from  the  string
          tmpStr  =  Left$(tmpStr,  InStr(tmpStr,  Chr$(0))  -  1)
  End  If
  'Free  the  PIDL
  CoTaskMemFree  lp.mkid
  'Return
  FolderLocation  =  tmpStr
  
  End  Function
  
  
  Private  Sub  cmdGet_Click()
  
  If  lst.ListIndex  <    0  Then
          'No  item  selected
          Exit  Sub
  End  If
  
  txt.Text  =  FolderLocation(lst.ItemData(lst.ListIndex))
  
  End  Sub其中CSIDL_DESKTOP、 CSIDL_PERSONAL  分别代表桌面路径以及我的文档的目录