对于VB6.0 CommonDialog控件 非标准控件,如果用该控件编程后,程序挪到其他的电脑,有可能会提示无法找到CommonDialog.ocx的报错,因此我这里还是尽量避免使用CommonDialog控件。
那么不使用CommonDialog控件,还有别的好方法吗?
这里网上找了很多资料,自己总结了一下,下面附上代码,
'打开文件对话框,获取文件,返回值是数组,里面包含带路径的文件名,如果没有选择,返回一维空数组。Path是初始路径,Fliter是文件格式过滤关键字
Public Function GetFileDlg(Optional ByVal Path As String = "", Optional ByVal Fliter As String = "所有文件 (*.*)|*.*") As String()
Dim FileDlg As Object ' 文件对话框
Dim FilePath, Stemp() As String
Dim OutFiles() As String
Dim i As Integer
Set FileDlg = CreateObject("MSComDlg.CommonDialog")
' 打开附件
FileDlg.DialogTitle = "选择文件"
FileDlg.Filter = Fliter
FileDlg.FilterIndex = 2
FileDlg.flags = &H80200 ' &H80200一次性可以选择多个文件,&H80000 每次只能选择一个文件
FileDlg.initdir = Path
FileDlg.ShowOpen
FilePath = FileDlg.fileName
If FilePath <> "" Then
If InStr(1, FilePath, Chr(0)) <> 0 Then
Stemp = Split(FilePath, Chr(0))
ReDim OutFiles(UBound(Stemp) - 1)
For i = 1 To UBound(Stemp)
OutFiles(i - 1) = Stemp(0) & "\" & Stemp(i)
Next
Else
ReDim OutFiles(0)
OutFiles(0) = FilePath
End If
Else
ReDim OutFiles(0)
End If
GetFileDlg = OutFiles
End Function
'保存文件,Path是初始路径,DefaultFileName 是缺省显示的文件名
Public Function SaveFileDlg(Optional ByVal Path As String="",Optional ByVal DefaultFileName As String="") As String
Dim FileDlg As Object ' 文件对话框
Set FileDlg = CreateObject("MSComDlg.CommonDialog")
With FileDlg
.DialogTitle = "选择文件"
.Filter = "所有文件 (*.*)|*.*"
.flags = &H80000 '新的对话框格式,只能选一个文件 ,不这么申明就是老格式了,自己可以试验下
.fileName = DefaultFileName
.initdir = Path
.showsave
End With
SaveFileDlg = FileDlg.fileName
End Function