vb读取文件夹的文件vb读取文件夹的文件.doc
文本预览下载声明
在使用vb编程,有些时候我们不得不面对需要一次性读取文件夹中某一类型的所有文件,这如何实现咧?
第一种方法是动态加载控件实现文件的读取,代码如下:
Private Sub Command1_Click() Dim objDlg //shell对象
Dim objF //文件选择对话框对象
Dim DstPath //文件夹路径
Dim I //临时变量Set objDlg = CreateObject(Shell.Application) //加载Set objF = objDlg.BrowseForFolder(H0, 选择存放位置:, H1) If InStr(1, TypeName(objF), Folder, vbTextCompare) 0 Then //路径有效则记录路径 DstPath = objF.self.Path Else MsgBox 目录无效! End If BrowseForFolder的作用就是创建上图所示的文件夹选择对话框,其参数表为:
object.BrowseForFolder Hwnd, Title, Options, [RootFolder]
object 用来创建对话框的对象 Hwnd 父窗口的句柄 Title 对话框的标题 Options 一个long类型的值主要的作用是控制对话框显示的格式,具体取值可以参看MSDN中的“BROWSEINFO” RootFolder 可选项,对话框打开时的位置
Dim flist As FileListBox //控件类型FileListBox
Dim lbox As ListBox //控件类型ListBox
‘通过Me对象以及Controls集合动态的加载两个控件
Set flist = Me.Controls.Add(VB.FilelistBox, flb, Me) Set lbox = Me.Controls.Add(“VB.ListBox”, “lb”, Me)
With objF File1 .Pattern = *.jpg;*.bmp;*.gif //需要筛选出来的文件类型 .Path = DstPath //文件夹的路径 For i = 0 To .ListCount - 1 //遍历所有指定类型的文件 List1.AddItem DstPath \ .List(i) //假设listbox的名称为list1Next End With End Sub
这里需要说明一下:
FileListBox控件可以通过.Pattern中指定的文件后缀名,以及.Path指定的文件夹路径,筛选出.Path路径下所有满足条件的文件类型,将文件名全部记录在.List数组中,我们通过一个ListBox控件,将.List 数组中的所有文件全部取出来,通过DstPath \ .List(i),记录下文件的全路径
有些时候,我们需要将弹出来的对话框设置成模态的对话框以限制用户的一些操作,但是一般使用BrowseForFolder得到的都是非模态的对话框,那么有没有实现呢?肯定是可以的,一般我们是用BrowseForFolder的时候总是习惯性的将Hwnd这个参数设置成0,这样得到的就是一个非模态的文件夹选择对话框。如果将Hwnd设置成对应的父窗口的句柄的话,我们就可以得到一个模态的对话框了。
第二种方法则是自己添加控件完成,文件夹选择的操作,这种方法有两种思路,一种是利用VB的空间DirListBox以及DriveListBox两个控件如图
‘确定按钮
Private Sub Command1_Click()
打开一个目录
Dim flb As FileListBox 动态FileListBox控件
Dim lb As ListBox 动态ListBox控件
Dim i 中间变量
fPath = Dir1.path
Set flb = Me.Controls.Add(VB.FilelistBox, picNew)
Set lb = Me.Controls.Add(VB.ListBox, fileList)
获取文件下所有满
显示全部