Hallo miteinand,
einfache Fragestellung: Im Code wird "path" ByVal übergeben, wie kann es sein, dass "path" nach dem Aufruf geändert wurde?
Danke.
Hier das Macro zum testen:
einfache Fragestellung: Im Code wird "path" ByVal übergeben, wie kann es sein, dass "path" nach dem Aufruf geändert wurde?
Danke.
Hier das Macro zum testen:
Visual Basic-Quellcode
- '----------------------------------
- '- macro to get a folder
- '--------------------------------------
- Option Explicit
- Public Type BROWSEINFO
- hOwner As Long
- pidlRoot As Long
- pszDisplayName As String
- lpszTitle As String
- ulFlags As Long
- lpfn As Long
- lParam As Long
- iImage As Long
- End Type
- '32-bit API declarations
- Declare Function SHGetPathFromIDList Lib "shell32.dll" _
- Alias "SHGetPathFromIDListA" (ByVal pidl As Long, ByVal pszPath As String) _
- As Long
- '- API function
- Declare Function SHBrowseForFolder Lib "shell32.dll" _
- Alias "SHBrowseForFolderA" (lpBrowseInfo As BROWSEINFO) As Long
- '=================================================
- '- THIS RUNS THE WHOLE MACRO TO GET THE SELECTION
- '=================================================
- Sub BrowseFolders()
- Dim Msg As String
- Msg = "Please select a folder."
- MsgBox GetDirectory(Msg)
- End Sub
- '
- '-------------------------
- '- this does the API call
- '-------------------------
- Function GetDirectory(Optional Msg) As String
- Dim bInfo As BROWSEINFO
- Dim path As String
- Dim r As Long, x As Long, pos As Integer
- '---------------------------
- ' Root folder = Desktop
- bInfo.pidlRoot = 0&
- '---------------------------
- ' Title in the dialog
- If IsMissing(Msg) Then
- bInfo.lpszTitle = "Select a folder."
- Else
- bInfo.lpszTitle = Msg
- End If
- '---------------------------
- ' Type of directory to return
- bInfo.ulFlags = &H1
- '---------------------------
- ' Display the dialog
- x = SHBrowseForFolder(bInfo)
- '---------------------------
- ' Parse the result
- path = Space$(512)
- r = SHGetPathFromIDList(ByVal x, ByVal path)
- If r Then
- pos = InStr(path, Chr$(0))
- GetDirectory = Left(path, pos - 1)
- Else
- GetDirectory = ""
- End If
- End Function
- '----------------------------------------------------