VBA-récuper le chemin d'un dossier via un browser
Bonjour !
Dans une macro excel, je cherche à selectionner un dossier, puis enregistrer le chemin de ce dossier dans une variable pour l'utiliser plus tard dans une autre macro.
Je sais ouvrir le browser de dossier et selectionner le dossier mais assez stupidement je n'arrive pas à récuperer l'adresse pour la mettre dans une variable.
Ci-joint le code utilisé pour chercher le dossier.
En vous remerciant pour votre aide.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
| Private Declare Function SHBrowseForFolder Lib "shell32" (lpbi As BrowseInfo) As Long
Private Declare Function SHGetPathFromIDList Lib "shell32" (ByVal pidList As Long, ByVal lpBuffer As String) As Long
Private Declare Function lstrcat Lib "kernel32" Alias "lstrcatA" (ByVal lpString1 As String, ByVal lpString2 As String) As Long
Const MAX_PATH = 4096
Private Type BrowseInfo
hWndOwner As Long
pIDLRoot As Long
pszDisplayName As Long
lpszTitle As Long
ulFlags As Long
lpfnCallback As Long
lParam As Long
iImage As Long
End Type
Private Sub CommandButton1_Click()
ChoosePath (title)
'MsgBox ChoosePath
End Sub
Public Function ChoosePath(title As String) As String
Dim lpIDList As Long
Dim sBuffer As String
Dim szTitle As String
Dim tBrowseInfo As BrowseInfo
szTitle = title
With tBrowseInfo
'.hWndOwner = handle
.lpszTitle = lstrcat(szTitle, "")
.ulFlags = BIF_RETURNONLYFSDIRS + BIF_DONTGOBELOWDOMAIN
End With
lpIDList = SHBrowseForFolder(tBrowseInfo)
ChoosePath = ""
If (lpIDList) Then
sBuffer = Space(MAX_PATH)
SHGetPathFromIDList lpIDList, sBuffer
sBuffer = Left(sBuffer, InStr(1, sBuffer, vbNullChar) - 1)
ChoosePath = sBuffer
End If
End Function |