http://blog.csdn.net/northwolves/archive/2005/08/30/468251.aspxflags: cdlOFNExplorer &H80000 它使用类似资源管理器的打开一个文件的对话框模板。适用于 Windows 95 和 Windows NT 4.0。
cdlOFNAllowMultiselect &H200 它指定文件名列表框允许多重选择。 运行时,通过按 SHIFT 键以及使用 UP ARROW 和 DOWN ARROW 键可选择多个文件。作完此操作后,FileName 属性就返回一个包含全部所选文件名的字符串。串中各文件名用空格隔开 Private Sub Command1_Click() Dim i As Integer, title As String, FileNames As String With CommonDialog1 .FileName = "" .Filter = "All Files|*.*" '过滤器指定在对话框的文件列表框中显示的文件的类型 .Flags = &H80200 '允许多重选择。'!!!!!!!!!!! .Action = 1 ' i = InStrRev(.FileName, "\") ' ' title = Left(.FileName, i) ' 目录 ' FileNames = Mid(.FileName, i + 1) ' all selectes files ' End With ' FileNames = Replace(FileNames, Chr(32), vbCrLf) ' MsgBox FileNames, vbYesNo, title '显示对话框 End Sub
另外,我是用的win2000,那cdlOFNExplorer 是不是就没什么用啊?
Private Sub Command1_Click() Dim i As Integer, title As String, FileNames As String
ComDialogFax.Flags = cdlOFNAllowMultiselect Or cdlOFNExplorer Or cdlOFNLongNames ComDialogFax.Filter = "All Excel Files (*.xls)|*.xls|All files (*.*)|*.*" ComDialogFax.FilterIndex = 1 ComDialogFax.InitDir = "C:\" ComDialogFax.FileName = "" ComDialogFax.CancelError = False ComDialogFax.ShowOpen
i = InStrRev(ComDialogFax.FileName, "\") ' title = Left(ComDialogFax.FileName, i) ' Ŀ¼ FileNames = Mid(ComDialogFax.FileName, i + 1) ' all selectes files Do While Len(FileNames) > 0 title = GetLeftWords(FileNames, Chr(0)) MsgBox title Loop End SubFunction GetLeftWords(s As String, ByVal Ch As String) As String Dim i As Long i = InStr(s, Ch) If i > 0 Then GetLeftWords = Left(s, i - 1) s = Mid(s, i + Len(Ch)) Else GetLeftWords = s s = vbNullString End If End Function
cdlOFNExplorer &H80000
它使用类似资源管理器的打开一个文件的对话框模板。适用于 Windows 95 和 Windows NT 4.0。
cdlOFNAllowMultiselect &H200
它指定文件名列表框允许多重选择。
运行时,通过按 SHIFT 键以及使用 UP ARROW 和 DOWN ARROW 键可选择多个文件。作完此操作后,FileName 属性就返回一个包含全部所选文件名的字符串。串中各文件名用空格隔开
Private Sub Command1_Click()
Dim i As Integer, title As String, FileNames As String
With CommonDialog1
.FileName = ""
.Filter = "All Files|*.*" '过滤器指定在对话框的文件列表框中显示的文件的类型
.Flags = &H80200 '允许多重选择。'!!!!!!!!!!!
.Action = 1
' i = InStrRev(.FileName, "\") '
' title = Left(.FileName, i) ' 目录
' FileNames = Mid(.FileName, i + 1) ' all selectes files
' End With
' FileNames = Replace(FileNames, Chr(32), vbCrLf)
' MsgBox FileNames, vbYesNo, title '显示对话框
End Sub
Dim i As Integer, title As String, FileNames As String
ComDialogFax.Flags = cdlOFNAllowMultiselect Or cdlOFNExplorer Or cdlOFNLongNames
ComDialogFax.Filter = "All Excel Files (*.xls)|*.xls|All files (*.*)|*.*"
ComDialogFax.FilterIndex = 1
ComDialogFax.InitDir = "C:\"
ComDialogFax.FileName = ""
ComDialogFax.CancelError = False
ComDialogFax.ShowOpen
i = InStrRev(ComDialogFax.FileName, "\") '
title = Left(ComDialogFax.FileName, i) ' Ŀ¼
FileNames = Mid(ComDialogFax.FileName, i + 1) ' all selectes files
Do While Len(FileNames) > 0
title = GetLeftWords(FileNames, Chr(0))
MsgBox title
Loop
End SubFunction GetLeftWords(s As String, ByVal Ch As String) As String
Dim i As Long
i = InStr(s, Ch)
If i > 0 Then
GetLeftWords = Left(s, i - 1)
s = Mid(s, i + Len(Ch))
Else
GetLeftWords = s
s = vbNullString
End If
End Function