按条件遍历指定目录下的文件名
本帖最后由 暗夜男 于 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有没有限制
Sub tt()
Dim mth As String, namepath As String, ebk As String
Dim arr(1 To 1000, 1 To 1), i As Integer '先定义一个很大的数值arr,若还不够大,可以再放大些
With Sheet1
'#######当d1空的时候取值位e1单元格的值,反正则区d1单元格值(可以是文本月数如01,也可以是数值1),对于你输的要求不是太明白
'其实你可以改下面2行代码,就能满足你要求,还是自己改会更明白些!
mth = IIf(.[d1] = '', [e1].Value, Year(Date)& Format(.[d1], '年00月'))& '指定目录' '文件夹名称
namepath = ThisWorkbook.Path& ''& mth& '' '文件路径
'#######################################################以上自己改成你要的方法吧
ebk = Dir(namepath& '好_*.xls*') '用dir遍历文件夹内是否还有好_开头的xls后缀的excel文件
Do While ebk< > '' '当ebk不为空时,即找到了文件,则讲文件名给数值,否则退出do,loop循环
i = i + 1
arr(i, 1) = ebk
ebk = Dir
Loop
.Range('c2:c1000').ClearContents '清除数据
.Range('c2').Resize(1000) = arr '将数据写入
End With