Option Explicit
Public Declare Function GetWindowsDirectory Lib "kernel32" Alias
"GetWindowsDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long)
As Long
Public Declare Function GetSystemDirectory Lib "kernel32" Alias
"GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long)
As Long
Public Declare Function GetTempPath Lib "kernel32" Alias "GetTempPathA"
(ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long
Public Enum SYS_Path
WINDOWS_DIR = 0
SYSTEM_DIR = 1
TEMP_DIR = 2
End Enum
Public Function SYS_GetPath(Path As SYS_Path) As String
On Local Error Resume Next
Dim Temp As String * 256
Dim X As Integer
Select Case Path
Case 0 'Directorio Windows:
X = GetWindowsDirectory(Temp, Len(Temp))
Case 1 'Directorio System:
X = GetSystemDirectory(Temp, Len(Temp))
Case 2 'Directorio Temp (Directorio Temporal):
X = GetTempPath(Len(Temp), Temp)
End Select
SYS_GetPath = VBA.Left$(Temp, X)
If Path = TEMP_DIR Then SYS_GetPath = VBA.Left$(SYS_GetPath, Len(SYS_GetPath) - 1)
End Function