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模型提供了一套完备的文件处理结构,使得编码更加简单直观。

转载于:https://www.cnblogs.com/Nina-piaoye/archive/2013/04/09/3010280.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值