Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 5254|回复: 5

[已解决]求遍历:Files 集合 及 SubFolders 属性 定义成员对象

[复制链接]
发表于 2014-3-9 04:53 | 显示全部楼层 |阅读模式
本帖最后由 锋速vba 于 2014-3-9 04:55 编辑

Sub 遍历()
        Dim FS, Fc, Fx, I
        Set FS = CreateObject("Scripting.FileSystemObject")
        Set Fc = FS.GetFolder(ThisWorkbook.Path)

        '━━━━━━━━━━━━━━【Files 集合】
        For Each Fx In Fc.Files
            I = I + 1
            Debug.Print Format(I, "00"); Tab(12); Fx.Name; Tab(60); Fx.Type; Tab(88); FS.BuildPath(Fc, "\")
        Next

        '━━━━━━━━━━━━━━
        For I = 1 To Fc.Files.Count
            I = I + 1
            '求 Fx 对象
        Next I

        '━━━━━━━━━━━━━━【SubFolders 属性】
        For Each Fx In Fc.SubFolders
            I = I + 1
            Debug.Print Format(I, "00"); Tab(12); Fx.Name; Tab(60); Fx.Type; Tab(88); FS.BuildPath(Fc, "\")
        Next

        '━━━━━━━━━━━━━━
        For I = 1 To Fc.SubFolders.Count
            I = I + 1
            '求 Fx 对象
        Next I
End Sub
最佳答案
2014-3-9 08:00
你在for next循环要想取得fc.files.item
item定义是这样的:
QQ截图20140309080046.jpg

既然是key,无法象遍历其他的集合成员,使用fc.files.item(i)这种形式。
我测试了,你在执行时fc.files.item(文件名)才有效,也就是说,在这个集合中,文件名是做为key的。
只有指定了文件名,才能从files集合中返回某个FILE。

另外,建议用第一种形式for each循环是最好的。

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2014-3-9 07:41 | 显示全部楼层
这里用递归吧,遍历加上路径参数即可。
回复

使用道具 举报

发表于 2014-3-9 08:00 | 显示全部楼层    本楼为最佳答案   
你在for next循环要想取得fc.files.item
item定义是这样的:
QQ截图20140309080046.jpg

既然是key,无法象遍历其他的集合成员,使用fc.files.item(i)这种形式。
我测试了,你在执行时fc.files.item(文件名)才有效,也就是说,在这个集合中,文件名是做为key的。
只有指定了文件名,才能从files集合中返回某个FILE。

另外,建议用第一种形式for each循环是最好的。

评分

参与人数 1 +1 收起 理由
锋速vba + 1 很给力!

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2014-3-9 15:02 | 显示全部楼层
本帖最后由 锋速vba 于 2014-3-9 17:51 编辑

感谢版主智慧勤劳热心。

在之前,For Each...Next 语句 和 For...Next 语句 这两个循环语句我是一齐接触的,总乐意让这一对异曲同工的程式去分别完成一些遍历对象的事情,来比较它们的简约与速度。
似乎仅仅就是在探索到“files”成员时,这坎过不了,还还时不时的花不少时间对其深耕。现在明白了,在“files”方面还是绕过For...Next 语句的好。再次谢谢。

回复

使用道具 举报

发表于 2014-3-10 08:27 | 显示全部楼层
锋速vba 发表于 2014-3-9 15:02
感谢版主智慧勤劳热心。

在之前,For Each...Next 语句 和 For...Next 语句 这两个循环语句我是一齐接触 ...

只要是对于集合,建议用for each循环。

回复

使用道具 举报

 楼主| 发表于 2014-3-10 15:43 | 显示全部楼层
明白
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-26 09:15 , Processed in 0.405567 second(s), 15 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表