Выбор папки с помощью Application.FileDialog - PullRequest
3 голосов
/ 22 февраля 2012

Я использую Application.FileDialog, чтобы позволить пользователю выбрать папку, например:

Dim F As FileDialog
Set F = Application.FileDialog(msoFileDialogFolderPicker)

В этом случае папка по умолчанию не содержит вложенных папок, поэтому пользователь видит пустое поле. В идеале, диалоговое окно должно было бы не просто перечислять папки, но и отображать файлы, отключенные / неактивные, чтобы пользователь мог видеть содержимое папки, которую он выбирает.

Есть ли способ сделать это по дешевке с помощью FileDialog, или мне нужно создать свою собственную форму (тьфу)?

1 Ответ

1 голос
/ 22 февраля 2012

Вот кое-что из моей базы данных. Я уже давно использую это для VBA . Этот код не мой, и я нашел его в Интернете очень давно.

Sub Sample()
    ret = BrowseForFolder("C:\")
End Sub

Function BrowseForFolder(Optional OpenAt As Variant) As Variant
    Dim ShellApp As Object

    Set ShellApp = CreateObject("Shell.Application"). _
    BrowseForFolder(0, "Please choose a folder", 0, OpenAt)

    On Error Resume Next
    BrowseForFolder = ShellApp.self.Path
    On Error GoTo 0

    Set ShellApp = Nothing

    Select Case Mid(BrowseForFolder, 2, 1)
    Case Is = ":"
        If Left(BrowseForFolder, 1) = ":" Then GoTo Invalid
    Case Is = "\"
        If Not Left(BrowseForFolder, 1) = "\" Then GoTo Invalid
    Case Else
        GoTo Invalid
    End Select

    Exit Function

Invalid:
    BrowseForFolder = False
End Function
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...