VB如何打开多个文件

  • 学习5106次

VB怎么打开多个文件?使用CommonDialog控件,可以实现打开文件的功能。但只能是实现打开一个文件。如果需要打开多个文件,可以用增加打开多个文件函数的方法来实现。

新建一个VB工程,在窗口中放入List控件、按钮和CommonDialog控件。如下图所示:

VB打开多个文件演示1

在代码编辑窗口,写入如下代码程序:

Private Sub Command1_Click()
 Dim DlgInfo As DlgFileInfo
 Dim I As Integer
 On Error GoTo ErrHandle
 '清除List1中的项
 List1.Clear
 '选择文件
 With CommonDialog1
 .CancelError = True
 .MaxFileSize = 32767 '被打开的文件名尺寸设置为最大,即32K
 .Flags = cdlOFNHideReadOnly Or cdlOFNAllowMultiselect Or cdlOFNExplorer
 .DialogTitle = "选择文件"
 .Filter = "所有类型的文件(*.*)|*.*"
 .ShowOpen
 DlgInfo = GetDlgFileInfo(.FileName)
 End With
 For I = 1 To DlgInfo.iCount
 List1.AddItem DlgInfo.sPath & DlgInfo.sFile(I)
 'List1.AddItem DlgInfo.sFile(I)
 Next I
 Exit Sub
 ErrHandle:
 ' 按了“取消”按钮
 End Sub

新建一个模块,写入如下代码程序:

Option Explicit
 Type DlgFileInfo
 iCount As Long
 sPath As String
 sFile() As String
 End Type
 '功能: 返回CommonDialog所选择的文件数量、路径和文件名
 '参数说明: strFileName为CommonDialog的Filename属性
 '函数类型: DlgFileInfo。这是一个自定义类型,其中iCount返回所选择文件的个数,sPath返回所选择文件的路径,sFile()返回所选择文件的文件名(不包括路径)
 '注意事项: 该函数应在CommonDialog.ShowOpen方法后立即使用,以免当前路径被更改
 Public Function GetDlgFileInfo(strFilename As String) As DlgFileInfo
 Dim sPath, tmpStr As String
 Dim sFile() As String
 Dim iCount As Integer
 Dim I As Integer
 On Error GoTo ErrHandle
 sPath = CurDir()
 tmpStr = Right$(strFilename, Len(strFilename) - Len(sPath)) '将文件名与路径分离
 If Left$(tmpStr, 1) = Chr$(0) Then
 '选择了多个文件(分离后第一个字符为Chr$(0))
 For I = 1 To Len(tmpStr)
 If Mid$(tmpStr, I, 1) = Chr$(0) Then
 iCount = iCount + 1
 ReDim Preserve sFile(iCount)
 Else
 sFile(iCount) = sFile(iCount) & Mid$(tmpStr, I, 1)
 End If
 Next I
 Else
 '只选择了一个文件(注意:根目录下的文件名除去路径后左边没有"\")
 iCount = 1
 ReDim Preserve sFile(iCount)
 If Left$(tmpStr, 1) = "\" Then tmpStr = Right$(tmpStr, Len(tmpStr) - 1)
 sFile(iCount) = tmpStr
 End If
 GetDlgFileInfo.iCount = iCount
 ReDim GetDlgFileInfo.sFile(iCount)
 If Right$(sPath, 1) <> "\" Then sPath = sPath & "\"
 GetDlgFileInfo.sPath = sPath
 For I = 1 To iCount
 GetDlgFileInfo.sFile(I) = sFile(I)
 Next I
 Exit Function
 ErrHandle:
 MsgBox "GetDlgFileInfo函数执行错误!", vbOKOnly + vbCritical, "自定义函数错误"
 End Function

点击运行按钮,效果如下图所示:

VB打开多个文件演示2

单击“打开文件”按钮,打开一个文件夹,选中多个文件,如下图所示:

VB打开多个文件演示3

点击“打开”按钮后,效果如下图所示:

VB打开多个文件演示4

可以看到,一次打开了多个文件。

发表评论