快速批量获取当前文件夹及子文件夹的大小

前言

计算机的内存是有限的,面对海量的数据和垃圾文件,我们的电脑越来越慢,这时我们想清理一下我们的硬盘,通常的方法是:看一下哪个分区或目录占用的空间比较大,然后再看一下目录下的文件是否可以删除.

但是当我们打开资源管理器看到的却是这个样子的.

发现:只有文件显示大小,文件夹是不显示的.如果需要知道某个文件夹的大小,需要点击右键,属性,如下图所示.

获取文件夹大小

虽然我们不知道微软为何不显示文件夹的大小,但是我们一定要知道如何去获取文件夹大小的方法.

在当前文件夹内创建一个EXCEL文件,我们可以起名为”文件夹大小.xlsm”,打开文件时,启用宏,按ALT+F11打开VBA编辑器,插入模块,并写入如下代码:

'设置公共变量

Public i

Public n

Sub foldersize() '主程序

'验证当前工作表名称,防止写错

If ActiveSheet.Name = "foldersize" Then

'清除所有单元格

Cells.Clear

'清除分级显示

Cells.ClearOutline

Else

Exit Sub

End If

'初始化公共变量

i = 2

n = 1

Dim fso, fld

'定义对象

Set fso =CreateObject("scripting.filesystemobject")

Set fld = fso.getfolder(ThisWorkbook.Path)

'设置表头

Cells(1, 1) = "文件夹名称"

Cells(1, 2) = "文件夹大小(MB)"

subfd fld

End Sub

Sub subfd(fds) '子程序

For Each fd In fds.subfolders

If n <= 7 Then

Rows(i).OutlineLevel = n

Else

Rows(i).OutlineLevel = 7

End If

'写入文件夹名称

Cells(i, 1) = fd.Name

'缩进

Cells(i, 1).InsertIndent (n)

'设置超级链接

ActiveSheet.Hyperlinks.Add Anchor:=Cells(i, 1),Address:=fd.Path

' 写入文件夹大小

Cells(i, 2) = WorksheetFunction.Text(Round(fd.size / 1024 /1024, 2), "0.00")

i = i + 1

'如果有子文件夹,则进行迭代

If fd.subfolders.Count <> 0 Then

'增加缩进量

n = n + 1

'迭代

subfd fd

Else:

n = n + 1

End If

n = n - 1

Next

'设置分组显示,汇总在上面

ActiveSheet.Outline.SummaryRow = xlAbove

End Sub

运行foldersize主程序,结果如下图所示:

列出了当前目录的每一个文件夹名称及大小,并且运用了分级显示,目录子目录清清楚楚,还设置了超级链接,只有点击就可以进入你想要的目录。

总结

心动不如行动,同学们也赶紧试试吧!记得把当前工作表的名字改成foldersize,不然没有结果哦!

(0)

相关推荐