Witam
w porządku, znalazłem rozwiązanie!!
Po wielu próbach zostawię Ci kod
Rozwiązania dla tych dwóch pozycji:
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/
do modyfikacji według własnego uznania:
Typ prywatny BROWSEINFO ' używany przez funkcję GetFolderName
hWłaściciel As LongPtr
pidlRoot jako LongPtr
pszDisplayName As String (Ciąg Znaków)
lpszTitle As String (Ciąg Znaków)
ulFlags As LongPtr
lpfn jako LongPtr
lParam jako LongPtr
iImage jako LongPtr
Typ końca
#If VBA7 Następnie
Private Declare PtrSafe Function SHGetPathFromIDList Lib "shell32.dll" aka "SHGetPathFromIDListA" (ByVal pidl as LongPtr, ByVal pszPath as String) as LongPtr
Private Declare PtrSafe Function SHBrowseForFolder Lib "shell32.dll" aka "SHBrowseForFolderA" (lpBrowseInfo As BROWSEINFO) As LongPtr
#Else
'Private Declare Function SHGetPathFromIDList lib "shell32.dll" aka "SHGetPathFromIDListA" (ByVal pidl as LongPtr, ByVal pszPath as String) tak długo
'Private Declare Function SHBrowseForFolder Lib "shell32.dll" aka "SHBrowseForFolderA" (lpBrowseInfo as BROWSEINFO) tak długo, jak długo
#End Cis
Funkcja GetFolderName(Msg As String) Jako ciąg
' zwraca nazwę folderu wybranego przez użytkownika
Dim bInfo As BROWSEINFO, path As String, r As LongPtr, x As LongPtr, pos As Integer
'bInfo.pidlRoot 0& ' Folder główny Pulpit
Jeśli IsMissing(Msg) to
bInfo.lpszTitle = "Wybierz katalog roboczy" ' tytuł okna dialogowego
Inaczej
bInfo.lpszTitle = Msg ' tytuł okna dialogowego
Zakończ jeżeli:
bInfo.ulFlags = &H1 ' Typ katalogu do zwrócenia
x = SHBrowseForFolder(bInfo) ' wyświetl okno dialogowe
' Analizowanie wyniku
ścieżka = Spacja$(512)
r = SHGetPathFromIDList(ByVal x, ByVal ścieżka)
Jeśli r To
pos = InStr(ścieżka, Chr$(0))
GetFolderName = Left(ścieżka, pos - 1)
Inaczej
GetFolderName = ""
Zakończ jeżeli:
Zakończ funkcję
Prywatny Sub CommandButton2_Click()
Dim Rep0 As Ciąg
Rep0 = GetFolderName("Wybierz katalog roboczy")
FrmE2S.TextBox1.Text = Rep0
Koniec subwoofera