Excel VBA遍历文件

休息日,无聊的上Excel Home看看有啥东东可学习,有啥问题能帮帮忙。看到很多帖子都是求助遍历特定文件夹下文件的实现方法。有朋友说03版Excel有FileSearch对象可以遍历文件夹下文件,07版中没有了FileSearch对象,不知如何遍历文件。我想03版能做的事,07版肯定能做啊,要不然不是倒退?于是搜寻一番,还真是取消了FileSearch对象啊!不过还有Scripting.FileSystemObject可以用,实现如下:

Sub main()
    Dim fs, fold, fls, fl
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set fold = fs.getfolder(folderpath) 'folderpath指文件夹路径,string型,实践中自行替换
    Set fls = fold.Files
    For Each fl In fls
        If InStr(fl.Name, ".xls") <> 0 Then '避免打开非Excel文件
            Workbooks.Open fl.Path  '打开文件
            statements '处理代码
            Workbooks(fl.Name).Close Savechanges:=True  '关闭文件
        End If
    Next
End Sub

    而后又发现Excel VBA内置的Dir()函数同样也可以,实现如下:

Sub main()
  Dim nm As String
  nm = Dir(folderpath & "*.xls*") 'folderpath指文件夹路径,string型,实践中自行替换
  Do While Len(nm) <> 0
    Workbooks.Open folderpath & nm

    statements '处理代码

    Workbooks(nm).Close Savechanges:=True
    nm = Dir()
  Loop
End Sub

    总结,编程思想都OO化了,搞的人总想着有什么对象去解决问题,孰不知OO不是全部,它也只不过是结构化的封装。就以上两种实现而言,我认为Dir函数更加效率,因为它是内置的,无需去做外部引用,而且它可以使用通配符。另外,FSO模型包含在脚本类型库 (Scrrun.dll) 中,如果电脑中没有装载脚本类型库,则FSO不可用,但不可否认,FSO模型提供了一套完备的文件处理结构,使得编码更加简单直观。

posted @ 2013-04-09 16:06  Nina  阅读(1732)  评论(0编辑  收藏  举报