Bu yazımızda, klasör seçmek için klasöre göz atmak için kullanılan iletişim kutusunu görüntülemek için kullanılan prosedürü oluşturduk.
Bu kod, çalışma zamanında klasör seçiminin gerekli olduğu diğer makrolarla birlikte kullanılabilir.
Mantıksal açıklama
Bu yazıda, klasöre göz atmak için iletişim kutusunu görüntülemek için iki API işlevine atıfta bulunduk.
Klasör tarayıcısını kullanarak belirli bir klasörü seçtiğimizde, iletişim kutusu seçilen klasörün yolunu döndürür.
Lütfen kod için aşağıdan takip edin
Seçenek Açık 'Kullanıcı veri türü bildiriliyor' işlevi tarafından kullanılır GetFolderName Özel Tür BROWSEINFO hOwner As Uzun pidlRoot As Uzun pszDisplayName As String lpszTitle As String ulFlags As Long lpfn As Long lParam As Long iImage As Long End Type "Declaring" için Özel Özel İşlev SHGetPathFromIDList Lib "shell32.dll" _ Takma ad "SHGetPathFromIDListA" (ByVal pidl As Long, ByVal pszPath As String) As Long Private Declare Function SHBrowseForFolder Lib "shell32.dll" _ Alias "SHBrowseForFolderBOWSE" _ Alias "SHBrowseForFolderAs" İşlevi (Msg As String) As String 'Kullanıcı tarafından seçilen klasörün adını döndürür Dim bInfo As BROWSEINFO, path As String, r As Long Dim X As Long, pos As Integer bInfo.pidlRoot = 0 'bInfo döndürülecek dizin türü .ulFlags = &H1 'İletişim kutusunu görüntüle X = SHBrowseForFolder(bInfo) ' Sonuç yolunu çözümle = Space$(512) ' API işlevi çağrılıyor r = SHGetPathFromIDList(ByVal X, ByVal yolu) ' klasör adı sonu dönüşü If r Then pos = InStr(path, Chr(0)) GetFolderName = Left(path, konum - 1) Else GetFolderName = "" End If End Function Sub TestGetFolderName() Dim FolderName As String 'Fonksiyon çağırıyor GetFolderName KlasörAdı = GetFolderName("Bir klasör seçin") KlasörAdı = "" ise MsgBox "Bir klasör seçmediniz." Else MsgBox "Bu klasörü seçtiniz: " & KlasörAdı End If End Sub
Bu blogu beğendiyseniz, Facebook'ta arkadaşlarınızla paylaşın. Ayrıca bizi Twitter ve Facebook'ta da takip edebilirsiniz.
Sizden haber almayı çok isteriz, işimizi nasıl geliştirebileceğimizi ve sizin için nasıl daha iyi hale getirebileceğimizi bize bildirin. E-posta sitesinde bize yazın