Nu skal du se min ven.. den kan du klare sådan her:
Option Explicit
Private Sub Form_Load() Dim strPath As String strPath = "%USERPROFILE%\text.txt" MsgBox EnvironString(strPath) End Sub
Public Function EnvironString(strString As String) As String Dim i As Long Dim strOne As String Dim strOut As String Dim strEnv As String Dim blnSel As Boolean For i = 1 To Len(strString) strOne = Mid$(strString, i, 1) Select Case LCase$(strOne) Case "%" blnSel = Not blnSel If strEnv <> "" Then strOut = (strOut & Environ(strEnv)) strEnv = "" End If Case "a" To "z" If blnSel = True Then strEnv = (strEnv & strOne) Else strOut = (strOut & strOne) End If Case Else blnSel = False strOut = (strOut & strOne) End Select Next EnvironString = strOut End Function
Private Declare Function ExpandEnvironmentStringsForUserA Lib "userenv.dll" ( _ ByVal hToken As Long, _ ByVal lpSrc As String, _ ByVal lpDest As String, _ ByVal dwSize As Long) As Long
Private Sub Form_Load() Dim strPath As String strPath = "%USERPROFILE%\text.txt" MsgBox APIEnvironString(strPath) End Sub
Public Function APIEnvironString(ByVal strString As String) As String Dim lngRet As Long Dim strTemp As String * 260 lngRet = ExpandEnvironmentStringsForUserA(0&, _ strString, _ strTemp, _ Len(strTemp)) - 1 If lngRet Then APIEnvironString = Left$(strTemp, lngRet) Else APIEnvironString = strString End If End Function
Private Declare Function FreeLibrary Lib "kernel32.dll" (ByVal hLibModule As Long) As Long Private Declare Function LoadLibraryA Lib "kernel32.dll" (ByVal lpLibFileName As String) As Long Private Declare Function GetProcAddress Lib "kernel32.dll" ( _ ByVal hModule As Long, _ ByVal lpProcName As String) As Long Private Declare Function ExpandEnvironmentStringsForUserA Lib "userenv.dll" ( _ ByVal hToken As Long, _ ByVal lpSrc As String, _ ByVal lpDest As String, _ ByVal dwSize As Long) As Long
Public Function EnvironString(ByVal strString As String) As String Dim lb As Long Dim lngRet As Long Dim strTemp As String * 260
lb = LoadLibraryA("userenv.dll") If GetProcAddress(lb, "ExpandEnvironmentStringsForUserA") Then ' Client Requires Windows XP or Windows 2000 Professional. ' Server Requires Windows Server 2003 or Windows 2000 Server. lngRet = ExpandEnvironmentStringsForUserA(0&, _ strString, _ strTemp, _ Len(strTemp)) - 1
If lngRet Then EnvironString = Left$(strTemp, lngRet) Else EnvironString = strString End If Else ' Win9x, 2000, 2003, XP... EnvironString = Win9xEnvironString(strString) End If
If lb Then FreeLibrary lb End If End Function
Private Function Win9xEnvironString(strString As String) As String Dim i As Long Dim strOne As String Dim strOut As String Dim strEnv As String Dim blnSel As Boolean For i = 1 To Len(strString) strOne = Mid$(strString, i, 1) Select Case LCase$(strOne) Case "%" blnSel = Not blnSel If strEnv <> "" Then strOut = (strOut & Environ$(strEnv)) strEnv = "" End If Case "a" To "z", "_" If blnSel = True Then strEnv = (strEnv & strOne) Else strOut = (strOut & strOne) End If Case Else blnSel = False strOut = (strOut & strOne) End Select Next Win9xEnvironString = strOut End Function
Private Sub Form_Load() Dim strPath As String strPath = "%USERPROFILE%\text.txt" MsgBox EnvironString(strPath) End Sub '---------------------------------------- Form1 ----------------------------------------
environ returns the values of system variable such as the temp folder
If you open a DOS box and write SET
then you will see the variables you can use.
So if temp is a string containing one of these values then this should give you what you want
msgbox Environ(temp)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.