In dit artikel hebben we een procedure gemaakt die wordt gebruikt voor het weergeven van een dialoogvenster, dat wordt gebruikt om door de map te bladeren om een map te selecteren.
Deze code kan samen met andere macro's worden gebruikt waarbij tijdens runtime een map moet worden geselecteerd.
Logische uitleg
In dit artikel hebben we verwezen naar twee API-functies om het dialoogvenster voor het bladeren door de map weer te geven.
Wanneer we een bepaalde map selecteren met behulp van de mapbrowser, retourneert het dialoogvenster het pad van de geselecteerde map.
Volg hieronder voor de code:
Optie Explicit 'Declaring user data type 'Gebruikt door de functie GetFolderName Private 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 'Verwijzing naar API-functie Private Declare Functie SHGetPathFromIDList Lib "shell32.dll" _ Alias "SHGetPathFromIDListA" (ByVal pidl As Long, ByVal pszPath As String) As Long Prive Declare-functie SHBrowseForFolder Lib "shell32.dll" _ Alias "SHBrowseForpolderFolderAInfol" (Msg As String) As String 'Retourneert de naam van de map die door de gebruiker is geselecteerd Dim bInfo As BROWSEINFO, pad As String, r As Long Dim X As Long, pos As Integer bInfo.pidlRoot = 0 'Type map om bInfo te retourneren .ulFlags = &H1 'Geef het dialoogvenster weer X = SHBrowseForFolder(bInfo) 'Ontleed het resultaatpad = Space$(512) 'Api-functie aanroepen r = SHGetPathFromIDList(ByVal X, ByVal-pad) 'Code voor het verwijderen van extra spaties in de einde van mapnaam return If r Then pos = InStr(path, Chr(0)) GetFolderName = Left(path, pos - 1) Else GetFolderName = "" End If End Function Sub TestGetFolderName() Dim FolderName As String 'Aanroepfunctie GetFolderName FolderName = GetFolderName("Selecteer een map") If FolderName = "" Dan MsgBox "U heeft geen map geselecteerd." Else MsgBox "U hebt deze map geselecteerd: " & Mapnaam End If End Sub
Als je deze blog leuk vond, deel hem dan met je vrienden op Facebook. Ook kunt u ons volgen op Twitter en Facebook.
We horen graag van u, laat ons weten hoe we ons werk kunnen verbeteren en voor u kunnen verbeteren. Schrijf ons op de e-mailsite