Option Explicit
Private Declare Function SetEnvironmentVariable Lib "kernel32" Alias "SetEnvironmentVariableA" (ByVal lpName As String, ByVal lpValue As String) As Long
Private Declare Function GetEnvironmentVariable Lib "kernel32" Alias "GetEnvironmentVariableA" (ByVal lpName As String, ByVal lpBuffer As String, ByVal nSize As Long) As Long
Private mstrNullChar As String
Private Const BufferSize As Long = 255
Public Function GetEnvironmentVar(ByVal EnvironVar As String) As String
Dim lngSize As Long
Dim lngReturn As Long
Dim strBuffer As String
mstrNullChar = Chr$(0)
EnvironVar = Trim$(EnvironVar) & mstrNullChar
strBuffer = Space$(BufferSize) & mstrNullChar
lngReturn = GetEnvironmentVariable(EnvironVar, strBuffer, BufferSize)
If lngReturn Then
GetEnvironmentVar = Trim$(Replace$(strBuffer, mstrNullChar, vbNullString)) 'Strip Chr$(0)
End If
End Function 'GetEnvironmentVar
Public Function SetEnvironmentVar(ByVal EnvironVar As String, ByVal VarValue As String) As String
Dim lngSize As Long
Dim lngReturn As Long
Dim strTemp As String
Dim strBuffer As String
Dim strMessage As String
mstrNullChar = Chr$(0)
strMessage = "Environment Variable: " & Trim$(EnvironVar) & " - already exists with" & vbCrLf & _
"Value: "
EnvironVar = Trim$(EnvironVar) & mstrNullChar
strBuffer = Space$(BufferSize) & mstrNullChar
VarValue = Trim$(VarValue)
lngReturn = GetEnvironmentVariable(EnvironVar, strBuffer, BufferSize)
If lngReturn Then
strTemp = Trim$(Replace$(strBuffer, mstrNullChar, vbNullString)) 'Strip Chr$(0)
EnvironVar = Replace$(EnvironVar, mstrNullChar, vbNullString)
strMessage = strMessage & strTemp
If UCase$(strTemp) = UCase$(VarValue) Then
MsgBox strMessage, vbInformation, "SetEnvironmentVar"
Exit Function
Else
strMessage = Replace$(strMessage, "Value:", "Old Value:")
strMessage = strMessage & " - Change to" & vbCrLf & "New Value: " & VarValue
If vbOK = MsgBox(strMessage, vbOKCancel + vbInformation + vbDefaultButton2, "SetEnvironmentVar") Then
EnvironVar = Trim$(EnvironVar) & mstrNullChar 'Reset during Get above
Else
MsgBox "Operation Cancelled", vbInformation, "SetEnvironmentVar"
Exit Function
End If
End If
End If
strBuffer = Trim$(VarValue) & mstrNullChar
lngReturn = SetEnvironmentVariable(EnvironVar, strBuffer)
If lngReturn Then
SetEnvironmentVar = Trim$(Replace$(strBuffer, mstrNullChar, vbNullString)) 'Strip Chr$(0)
Else
MsgBox "Operation Failed"
End If
End Function 'SetEnvironmentVar