2012-02-22 90 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