Hallo
het is oké dat ik een oplossing heb gevonden!!
Na meerdere pogingen laat ik je de code achter
De oplossingen voor deze twee posities:
http://codes-sources.commentcamarche.net/forum/affich-15102-selectionner-un-repertoire-avec-une-boite-de-dialogue-en-vba
http://www.cadsharp.com/blog/solidworks-macro-compatible-64-vba7/
Naar wens aan te passen:
Private Type BROWSEINFO ' gebruikt door de functie GetFolderName
hEigenaar Als LongPtr
pidlRoot als LongPtr
pszDisplayName als tekenreeks
lpszTitle als tekenreeks
ulFlags als LongPtr
lpfn als LongPtr
lParam als LongPtr
iImage als LongPtr
Type einde
#If VBA7 dan
Private Declare PtrSafe-functie SHGetPathFromIDList Lib "shell32.dll" ook bekend als "SHGetPathFromIDListA" (ByVal pidl als LongPtr, ByVal pszPath als String) als LongPtr
Private Declare PtrSafe-functie SHBrowseForFolder Lib "shell32.dll" ook bekend als "SHBrowseForFolderA" (lpBrowseInfo als BROWSEINFO) als LongPtr
#Else
'Private Declare Function SHGetPathFromIDList lib "shell32.dll" aka "SHGetPathFromIDListA" (ByVal pidl als LongPtr, ByVal pszPath als String) zo lang
'Private Declare Function SHBrowseForFolder Lib "shell32.dll" aka "SHBrowseForFolderA" (lpBrowseInfo als BROWSEINFO) zo lang
#End Taxus
Functie GetFolderName(msg als tekenreeks) als tekenreeks
' retourneert de naam van de map die door de gebruiker is geselecteerd
Dim bInfo als BROWSEINFO, pad als string, r als LongPtr, x als LongPtr, pos als geheel getal
'bInfo.pidlRoot 0& ' Hoofdmap Bureaublad
Als IsMissing(msg) dan
bInfo.lpszTitle = "Selecteer een werkmap" ' de titel van het dialoogvenster
Anders
bInfo.lpszTitle = Msg ' de titel van het dialoogvenster
Einde als
bInfo.ulFlags = &H1 ' Type directory om terug te keren
x = SHBrowseForFolder(bInfo) ' het dialoogvenster weergeven
' Ontleed het resultaat
pad = Spatie$(512)
r = SHGetPathFromIDList(ByVal x, ByVal pad)
Als r Dan
pos = InStr(pad, Chr$(0))
GetFolderName = Links(pad, pos - 1)
Anders
GetFolderName = ""
Einde als
Functie beëindigen
Privé Sub CommandButton2_Click()
Dim Rep0 als snaar
Rep0 = GetFolderName("Kies een werkmap")
FrmE2S.TextBox1.Text = Rep0
Einde Sub