En el explorador de archivos, la carpeta Mis documentos parece estar en el root pero no es así. Esta carpeta se encuentra en la subcarpeta de C:\Documents and Settings. La cuestión es que la primera subcarpeta toma el nombre del usuario y por lo tanto no solo cambia de un PC a otro, sino que ello también ocurre en un PC multiusuario.
El siguiente código permite visualizar la carpeta Mis documentos independientemente del usuario que esté conectado. Has de ponerlo en un módulo general:
Option Explicit
Private Type SHITEMID
cb As Long
abID As Byte
End Type
Private Type ITEMIDLIST
mkid As SHITEMID
End Type
Private Const CSIDL_PERSONAL As Long = &H5
Private Declare Function SHGetSpecialFolderLocation Lib "shell32.dll" _
(ByVal hwndOwner As Long, ByVal nFolder As Long, _
pidl As ITEMIDLIST) As Long
Private Declare Function SHGetPathFromIDList Lib "shell32.dll" Alias "SHGetPathFromIDListA" _
(ByVal pidl As Long, ByVal pszPath As String) As Long
Public Function Rep_Documents() As String
Dim lRet As Long, IDL As ITEMIDLIST, sPath As String
lRet = SHGetSpecialFolderLocation(100&, CSIDL_PERSONAL, IDL)
If lRet = 0 Then
sPath = String$(512, Chr$(0))
lRet = SHGetPathFromIDList(ByVal IDL.mkid.cb, ByVal sPath)
Car_Documentos = Left$(sPath, InStr(sPath, Chr$(0)) - 1)
Else
car_Documentos = vbNullString
End If
End Function
Ejemplo de llamado:
Private Sub CommandButton1_Click()
Cells(5, 2) = Car_Documentos()
End Sub
En VB6, solo hay que utilizar la variable de entorno UserProfile:
Nota: No funciona en Macintosh pero también funciona en VBA.
Dim sPathUser as String
sPathUser = Environ$("USERPROFILE") & "\mis documentos\"
MsgBox sPathUser
La función Environ$ se utiliza para recibir el valor de una variable de entorno.
Por ejemplo, si tuvieras WINDIR (Windows), obtendrás la carpeta en la que está instalado Windows (por defecto, C:\Windows\).
Estas son variables que puedes utilizar tanto en Batch como en la ventana de diálogo "Ejecutar". Igualmente en un entorno de programación como VB y VBA.
En Windows, presiona la tecla de Windows + R (o menú Inicio > Ejecutar) y escribe %UserProfile%, accederás a la carpeta del usuario actual.
Escribe "%UserProfile%\Mis documentos" para acceder a tus documentos, o escribe %WinDir% para la carpeta de Windows...o %tmp% para las carpetas temporales, etc.
Si eres administrador también puedes cambiar los valores o agregar variables de entorno desde el Panel de control (vista clásica) > Sistema > Configuración avanzada del sistema > Opciones avanzadas > Variables de entorno.
Foto: © Everypixel