2012-02-22 88 views
2
文件夾

我使用Application.FileDialog讓用戶選擇一個文件夾,如:在採摘使用Application.FileDialog

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

在這種情況下默認的文件夾包含子文件夾沒有,所以用戶看到什麼是一個空盒子。理想情況下,對話框不僅僅列出文件夾,還會列出禁用/變灰的文件,以便用戶能夠看到他正在拾取的文件夾的內容。

有沒有辦法用FileDialog以便宜的方式做到這一點,還是我必須創建自己的窗體(唉)?

+0

在我看來,你已經在做的是最好的方法。一個(複雜的)替代方案是使用SHBrowseForFolder API函數,這是我很久以前使用的:http://allapi.mentalis.org/apilist/SHBrowseForFolder.shtml – markblandford 2012-02-22 17:24:52

+0

+1好問題 – 2012-02-22 18:40:56

回答

1

這是從我的數據庫中的東西。我一直在使用它已經有一段時間了,現在是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 
+0

這是另一個選擇一個文件夾的方式,但是當我測試它時,它仍然沒有解決我的問題,即允許用戶在採摘之前查看文件夾內的內容。有沒有做到這一點的調整? – tpascale 2012-02-22 18:19:25

+0

不是我所知道的。另一種選擇是你建議的,創建你自己的表單。 – 2012-02-22 18:22:43

+0

讓我知道你是否想要一個關於如何繼續創建自己的形式的想法... – 2012-02-22 18:33:15