前言
计算机的内存是有限的,面对海量的数据和垃圾文件,我们的电脑越来越慢,这时我们想清理一下我们的硬盘,通常的方法是:看一下哪个分区或目录占用的空间比较大,然后再看一下目录下的文件是否可以删除.
但是当我们打开资源管理器看到的却是这个样子的.
发现:只有文件显示大小,文件夹是不显示的.如果需要知道某个文件夹的大小,需要点击右键,属性,如下图所示.
虽然我们不知道微软为何不显示文件夹的大小,但是我们一定要知道如何去获取文件夹大小的方法.
在当前文件夹内创建一个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) = "文件夹名称"
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,不然没有结果哦!