'将cdlOFNAllowMultiselect(&H200)多选标志添上 Private Sub Command1_Click() With CommonDialog1 .Flags = cdlOFNAllowMultiselect Or cdlOFNFileMustExist Or cdlOFNHideReadOnly Or cdlOFNExplorer .ShowOpen End With End Sub参见MSDN关于Flags的说明: ————————————————————————————
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
感谢 winehero(编程人生) !!!!!!
Dim OpenFiles,FileNamePath,FileName dim i as integer With CommonDialog1 .FileName = "" .DefaultExt = "*.*" .MaxFileSize = 10000 .FilterIndex = 0 .Filter = "*.xls|*.xls" .Flags = &H200 Or &H80000 Or &H4 ' Or cdlOFNFileMustExist .ShowOpen End With OpenFiles = Split(ComDlg.FileName, Chr(0)) '获取选择的一个或多个文件路径 For i = 0 To UBound(OpenFiles) '将文件路径加入list控件中以方便控制
If UBound(OpenFiles) >= 1 Then If i = UBound(OpenFiles) Then Exit Function End If FileNamePath = OpenFiles(0) & OpenFiles(i + 1)’文件的全路径 FileName = OpenFiles(i + 1)’文件名 Else '选单个文件的时候 FileNamePath = ComDlg.FileName FileName = ComDlg.FileTitle End If '下面取到文件的路径和文件名进行导入的文件 ’自己写代码 next i
Private Sub Command1_Click()
With CommonDialog1
.Flags = cdlOFNAllowMultiselect Or cdlOFNFileMustExist Or cdlOFNHideReadOnly Or cdlOFNExplorer
.ShowOpen
End With
End Sub参见MSDN关于Flags的说明:
————————————————————————————
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
dim i as integer
With CommonDialog1
.FileName = ""
.DefaultExt = "*.*"
.MaxFileSize = 10000
.FilterIndex = 0
.Filter = "*.xls|*.xls"
.Flags = &H200 Or &H80000 Or &H4 ' Or cdlOFNFileMustExist
.ShowOpen
End With
OpenFiles = Split(ComDlg.FileName, Chr(0)) '获取选择的一个或多个文件路径
For i = 0 To UBound(OpenFiles) '将文件路径加入list控件中以方便控制
If UBound(OpenFiles) >= 1 Then
If i = UBound(OpenFiles) Then
Exit Function
End If
FileNamePath = OpenFiles(0) & OpenFiles(i + 1)’文件的全路径
FileName = OpenFiles(i + 1)’文件名
Else
'选单个文件的时候
FileNamePath = ComDlg.FileName
FileName = ComDlg.FileTitle
End If
'下面取到文件的路径和文件名进行导入的文件
’自己写代码
next i