VBA-DIR函数(文件自动归档)

1.今天用dir函数做了一个自动将文件归档的程序,我们一起来看看效果,首先,文件夹里面的文件名称如下图所示,我们可以看到所有的文件名(除我们写VBA代码的表格)都符合2020.xx.xx.xlsx的格式

2.我们要做的是将同一月份的表格放到一个文件夹里,当我们运行代码就会得到以下两张图的结果,所有文件都被放到对应月份的文件夹里

3.接下来,看看我们如何实现吧,具体代码如下(由于注释较详细,这里就不过多说明)

Sub autotest()
'定义变量(文件名+集合(收集文件名名称集合))
Dim fname
Dim namelist As New Collection
'根目录(按自己的实际情况来,一定要在路径的后面加“\”,方便后面操作)
rootpath = "C:\Users\OYQ_LJL\Desktop\OYQ\文件自动归档\"
'dir 指定目录下第一个文件
fname = Dir(rootpath, vbDirectory)

Do While fname <> ""
'遍历该路径下所有文件,将文件名获取到namelist集合中
    If fname <> "." And fname <> ".." Then
    namelist.Add fname
    End If
'dir 指向下一个文件
fname = Dir
Loop
'定义数组,可以是字符串
Dim arr
arr = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)
Dim i As Long, j As Integer
'遍历每一个item
For i = 1 To namelist.Count
    For j = 0 To UBound(arr)
'当文件名符合XXXX.XX.XX的格式,就会对应的将其移动到其分类的文件夹里
        If Val(Mid(namelist(i), 6, 2)) = arr(j) Then
'当该目录下没有对应的分类文件夹,自动创建一个文件夹
            If Dir(rootpath & Val(Mid(namelist(i), 6, 2)) & "月", vbDirectory) = "" Then
               MkDir (rootpath & Val(Mid(namelist(i), 6, 2)) & "月")
            End If
'移动对应的文件到对应的文件夹里
        FileCopy rootpath & namelist.Item(i), rootpath & Val(Mid(namelist(i), 6, 2)) & "月/" & namelist.Item(i)
        Kill rootpath & namelist.Item(i)
        Exit For
        End If
    Next j
Next i
End Sub

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值