Excel精英培训网

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

[已解决]dir后判断,能显示所有文件夹名吗?

[复制链接]
发表于 2013-8-1 09:28 | 显示全部楼层 |阅读模式
本帖最后由 爱疯 于 2013-8-1 09:52 编辑


(实际C盘下的文件夹)



Sub test()
    Dim p, f
    p = "c:\"
    f = Dir(p, vbDirectory)
    Do While f <> ""
        If GetAttr(p & f) = vbDirectory Then
            Debug.Print f, GetAttr(p & f)
        End If
        f = Dir()
    Loop
End Sub

返回
Intel          16
PerfLogs       16
Windows        16






问题:如果能,怎么改呢?即返回12个文件夹名
谢谢!

最佳答案
2013-8-1 09:46
对于设置了属性的文件夹,直接用VBDIRECTORY是找不到的。
  1. Sub test()
  2.     On Error Resume Next
  3.     Dim p, f
  4.     p = "c:"
  5.     f = Dir(p, vbDirectory + vbHidden + vbArchive + vbReadOnly + vbSystem + vbVolume)
  6.     Do While f <> ""
  7.         If (GetAttr(p & f) And vbDirectory) = vbDirectory Then
  8.             Debug.Print f, GetAttr(p & f)
  9.         End If
  10.         f = Dir()
  11.     Loop
  12. End Sub
复制代码
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2013-8-1 09:41 | 显示全部楼层
回复

使用道具 举报

发表于 2013-8-1 09:45 | 显示全部楼层
  1. Sub test()
  2.     On Error Resume Next
  3.     Dim p, f
  4.     p = "c:"
  5.     f = Dir(p, vbDirectory + vbNormal + vbHidden + vbSystem + vbReadOnly)
  6.     Do While f <> ""
  7.         If (GetAttr(p & f) And vbDirectory) = vbDirectory Then
  8.             Debug.Print f, GetAttr(p & f)
  9.         End If
  10.         f = Dir()
  11.     Loop
  12. End Sub
复制代码
回复

使用道具 举报

发表于 2013-8-1 09:46 | 显示全部楼层    本楼为最佳答案   
对于设置了属性的文件夹,直接用VBDIRECTORY是找不到的。
  1. Sub test()
  2.     On Error Resume Next
  3.     Dim p, f
  4.     p = "c:"
  5.     f = Dir(p, vbDirectory + vbHidden + vbArchive + vbReadOnly + vbSystem + vbVolume)
  6.     Do While f <> ""
  7.         If (GetAttr(p & f) And vbDirectory) = vbDirectory Then
  8.             Debug.Print f, GetAttr(p & f)
  9.         End If
  10.         f = Dir()
  11.     Loop
  12. End Sub
复制代码
回复

使用道具 举报

 楼主| 发表于 2013-8-1 09:46 | 显示全部楼层
Sub test2()
    Dim p, f
    p = "c:\"
    f = Dir(p, vbHidden + vbDirectory)
    Do While f <> ""
        If InStr(f, ".") = False Then
            Debug.Print f, GetAttr(p & f)
        End If
        f = Dir()
    Loop
End Sub


如果文件名含".",会误判。

回复

使用道具 举报

发表于 2013-8-1 09:48 | 显示全部楼层
QQ截图20130801094849.jpg
回复

使用道具 举报

发表于 2013-8-1 09:48 | 显示全部楼层
另外要用GETATTR确定某一项属性的时候得用AND做处理。
回复

使用道具 举报

 楼主| 发表于 2013-8-1 09:57 | 显示全部楼层
本帖最后由 爱疯 于 2013-8-1 10:01 编辑
hwc2ycy 发表于 2013-8-1 09:46
对于设置了属性的文件夹,直接用VBDIRECTORY是找不到的。







谢谢烟花!
你的结果是对的。有些问题还不大清楚,来学习一下。
问1:为什么Dir 函数 的attributes 参数里没有vbArchive?
回复

使用道具 举报

发表于 2013-8-1 10:01 | 显示全部楼层
爱疯 发表于 2013-8-1 09:57
谢谢烟花!
你的结果是对的。有些问题还不大清楚,来学习一下。
为什么Dir 函数 的attribute ...

参数提示里有的。

点评

是哦,又被帮助坑了  发表于 2013-8-1 10:02
回复

使用道具 举报

发表于 2013-8-1 10:02 | 显示全部楼层
QQ截图20130801100330.jpg
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-20 19:39 , Processed in 0.726800 second(s), 16 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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