分享

按条件遍历指定目录下的文件名

 Excel实用知识 2021-05-23
本帖最后由 暗夜男 于 2016-11-23 07:38 编辑 


1.如果D1为空,那么按E1读取路径并遍历文件名,如果D1是01-12之间任意文本,那么按当年+D1文本组合,例如D1是03,那么组合后就是'2016年03月',然后按这个文本读取路径遍历文件名
2.比如论坛附件解压到'C:\123\456\'目录下,那么按照E1遍历的目录就是'C:\123\456\2016年11月指定目录',结果就是把'好_7.xls'和'好_8.xls'从C2开始依次输出
3.比如论坛附件解压到'C:\123\456\'目录下,D1文本是12,那么按照D1遍历的目录就是'C:\123\456\2016年12月指定目录',结果就是把'好_10.xls'和'好_12.xls'从C2开始依次输出
4.C列输出顺序为升序
5.目录有其他文件夹和文件,只读取'好_'开头的
6.目录里文件数量100左右,未来会更多,不知道VBA有没有限制

2016-11-22 13:52
  1. Sub tt()

  2.    Dim mth As String, namepath As String, ebk As String

  3.    Dim arr(1 To 1000, 1 To 1), i As Integer '先定义一个很大的数值arr,若还不够大,可以再放大些

  4.    With Sheet1

  5.    '#######当d1空的时候取值位e1单元格的值,反正则区d1单元格值(可以是文本月数如01,也可以是数值1),对于你输的要求不是太明白

  6.    '其实你可以改下面2行代码,就能满足你要求,还是自己改会更明白些!

  7.        mth = IIf(.[d1] = '', [e1].Value, Year(Date)& Format(.[d1], '年00月'))& '指定目录' '文件夹名称

  8.        namepath = ThisWorkbook.Path& ''& mth& ''                           '文件路径

  9.      '#######################################################以上自己改成你要的方法吧

  10.        ebk = Dir(namepath& '好_*.xls*') '用dir遍历文件夹内是否还有好_开头的xls后缀的excel文件

  11.        Do While ebk< > ''           '当ebk不为空时,即找到了文件,则讲文件名给数值,否则退出do,loop循环

  12.          i = i + 1

  13.          arr(i, 1) = ebk

  14.          ebk = Dir

  15.        Loop

  16.        .Range('c2:c1000').ClearContents  '清除数据

  17.        .Range('c2').Resize(1000) = arr   '将数据写入

  18.    End With

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多