公共对话也只是取得文件名。你的意思是取得没一个文件夹下的所有文件的文件名吧。
用api吧
--------------------下面加到模块中-----------
Option Explicit
Public Declare Function FindFirstFile Lib "kernel32" Alias "FindFirstFileA" _
(ByVal lpFileName As String, lpFindFileData As WIN32_FIND_DATA) As Long
Public Declare Function FindNextFile Lib "kernel32" Alias "FindNextFileA" _
(ByVal hFindFile As Long, lpFindFileData As WIN32_FIND_DATA) As Long
Public Declare Function FindClose Lib "kernel32" (ByVal hFindFile As Long) As Long
Public Const MAX_PATH = 260
Public Const FILE_ATTRIBUTE_ARCHIVE = &H20
Public Const FILE_ATTRIBUTE_COMPRESSED = &H800
Public Const FILE_ATTRIBUTE_DIRECTORY = &H10
Public Const FILE_ATTRIBUTE_HIDDEN = &H2
Public Const FILE_ATTRIBUTE_NORMAL = &H80
Public Const FILE_ATTRIBUTE_READONLY = &H1
Public Const FILE_ATTRIBUTE_SYSTEM = &H4
Public Const FILE_ATTRIBUTE_TEMPORARY = &H100'自定义数据类型FILETIME和WIN32_FIND_DATA的定义
Public Type FILETIME
    dwLowDateTime As Long
    dwHighDateTime As Long
End TypePublic Type WIN32_FIND_DATA
    dwFileAttributes As Long
    ftCreationTime As FILETIME
    ftLastAccessTime As FILETIME
    ftLastWriteTime As FILETIME
    nFileSizeHigh As Long
    nFileSizeLow As Long
    dwReserved0 As Long
    dwReserved1 As Long
    cFileName As String * MAX_PATH
    cAlternate As String * 14
End Type------------------参考一下吧-----------------------------
'--------------------------------------------------------------------------------
'           把当前文件夹路径下的所有文件入到listview中
'--------------------------------------------------------------------------------
Private Sub finfiles(tCurrentdir As String)
    Dim itmX As ListItem
    Dim tFindData As WIN32_FIND_DATA
    Dim strFileName As String
    Dim lHandle As Long
    Dim CountFolder As Integer
    Dim CountFiles As Integer
    CountFolder = 0
    CountFiles = 0
    ListView1.ListItems.Clear
    lHandle = FindFirstFile(tCurrentdir & "\*.*", tFindData)
    If lHandle = 0 Then
       Set itmX = ListView1.ListItems.Add(, , strFileName & "找不到文件")
       Exit Sub
    End If
   strFileName = fDelInvaildChr(tFindData.cFileName)
   Do While True
        tFindData.cFileName = ""
        If FindNextFile(lHandle, tFindData) = 0 Then
            FindClose (lHandle)
            Exit Do
        Else
            strFileName = fDelInvaildChr(tFindData.cFileName)
            If tFindData.dwFileAttributes = &H10 Then
                If strFileName <> "." And strFileName <> "." Then
                    Set itmX = ListView1.ListItems.Add(, , strFileName)
                    itmX.SmallIcon = 1
                    CountFolder = CountFolder + 1
                End If
            Else
                Debug.Print InStr(LCase(Right(strFileName, 3)), ExtendFileName)
                If InStr(ExtendFileName, LCase(Right(strFileName, 3))) > 0 Then
                    Set itmX = ListView1.ListItems.Add(, , strFileName)
                    itmX.SubItems(1) = CStr(FileLen(tCurrentdir & "\" & strFileName))
                    itmX.SmallIcon = 2
                    itmX.SubItems(2) = FileDateTime(tCurrentdir & "\" & strFileName)
                    CountFiles = CountFiles + 1
                End If
            End If
        End If
    Loop

解决方案 »

  1.   

    加上cdlOFNAllowMultiselect属性!
     
    Flags 属性(“打开”、“另存为”对话框)
          为“打开”和“另存为”对话框返回或设置选项。语法object.Flags [= value]Flags 属性语法有下列部分:部分 描述 
    object 对象表达式,其值是“应用于”列表中的对象。 
    value 如“设置值”中所描述,是为“打开”和“另存为”对话框指定选项的常数或值。 
    设置值Value 的设置值是:常数 值 描述 
    cdlOFNAllowMultiselect &H200 它指定文件名列表框允许多重选择。 
    运行时,通过按 SHIFT 键以及使用 UP ARROW 和 DOWN ARROW 键可选择多个文件。作完此操作后,FileName 属性就返回一个包含全部所选文件名的字符串。串中各文件名用空格隔开。
     
    cdlOFNCreatePrompt &H2000 当文件不存在时对话框要提示创建文件。该标志自动设置 cdlOFNPathMustExist 和 cdlOFNFileMustExist 标志。 
    cdlOFNExplorer &H80000 它使用类似资源管理器的打开一个文件的对话框模板。适用于 Windows 95 和 Windows NT 4.0。 
    CdlOFNExtensionDifferent &H400 它指示返回的文件扩展名与 DefaultExt 属性指定的扩展名不一致。如果 DefaultExt 属性是 Null,或者扩展相匹配,或者没有扩展时,此标志不设置。当关闭对话框时,可以检查这个标志的值。 
    cdlOFNFileMustExist &H1000 它指定只能输入文件名文本框已经存在的文件名。如果该标志被设置,则当用户输入非法的文件名时,要显示一个警告。该标志自动设置 cdlOFNPathMustExist 标志。 
    cdlOFNHelpButton &H10 使对话框显示帮助按钮。 
    cdlOFNHideReadOnly &H4 隐藏只读复选框。 
    cdlOFNLongNames &H200000 使用长文件名。 
    cdlOFNNoChangeDir &H8 强制对话框将对话框打开时的目录置成当前目录。 
    CdlOFNNoDereferenceLinks &H100000 不要间接引用外壳链接(也称作快捷方式)。缺省时,选取外壳链接会引起它被外壳间接引用。 
    cdlOFNNoLongNames &H40000 无长文件名。 
    CdlOFNNoReadOnlyReturn &H8000 它指定返回的文件不能具有只读属性,也不能在写保护目录下面。 
    cdlOFNNoValidate &H100 它指定公共对话框允许返回的文件名中含有非法字符。 
    cdlOFNOverwritePrompt &H2 使“另存为”对话框当选择的文件已经存在时应产生一个信息框,用户必须确认是否覆盖该文件。 
    cdlOFNPathMustExist &H800 它指定只能输入有效路径。如果设置该标志,输入非法路径时,应显示一个警告信息。 
    cdlOFNReadOnly &H1 建立对话框时,只读复选框初始化为选定。该标志也指示对话框关闭时只读复选框的状态。 
    cdlOFNShareAware &H4000 它指定忽略共享冲突错误。 
    说明cdlOFNExplorer 和 cdlOFNNoDereferenceLinks 标志适用于 Windows 95 和 Windows NT 4.0。Windows 95 中 cdlOFNExplorer 的公共对话框使用字符作为分隔符;而在没有 Windows 95 外壳的 Windows NT 的早期版本中,多重选择是使用空格作为分隔符(固而不能支持长文件名)。无论是在 Windows NT 4.0 还是在 Windows 95 中,如果不选取 cdlOFNAllowMultiselect 标志,cdlOFNExplorer 和 cdlOFNLongNames 标志均没有意义,并且实际上是缺省值。无论是在 Windows NT 4.0 还是在 Windows 95 中,如果 cdlOFNAllowMultiselect 标志被单独使用,都不能支持长文件名。这是因为多重文件名要复现空格分隔符,而长文件名也可能包括空格符。在 Windows NT 3.5 中,无法避免这种情况。如果使用 cdlOFNAllowMultiselect,就不能看到长文件名。如果在 Windows 95 中添加 cdlOFNExplorer 标志,就可以既能文件多选,又能看到长文件名。但是,这些文件名显现空字符分隔符,而不是空格分隔符隔开。因此,cdlOFNAllowMultiselect 和 cdlOFNExplorer 一起使用时,在 Windows 95 和 Windows NT 4.0 中需要不同的文件名所得结果的语法分析。这些常数在对象浏览器中的 Microsoft CommonDialog 控件 (MSComDlg) 对象库中列出。也可以定义所选择的标志。应使用启动窗体声明部分的 Const 关键字来定义想使用的标志。例如:Const ReadOnly  = &H00000001&
    Const Effects    = &H00000100&
    CommonDialog1.Flags = &H10& Or &H200&将所需常数值能相加产生同样的结果。下例与上例等效:CommonDialog1.Flags = &H210& 数据类型Long